1

我正在运行 Spring + hibernate 3 + c3p0。启动时,如果数据库关闭,大约 10 分钟后会抛出异常。在那之前程序被阻塞...我不包括 spring xml、hibernate 配置等,因为这是一个相当普遍的问题,如果存在解决方案,它必须是标准的直接方式。如果没有,我可以修剪关键代码和配置并将其粘贴到此处。有人知道吗?提前致谢。


澄清:

我本质上需要的是知道在 DriverManager.setLoginTimeout() 函数周围是否有 c3p0 或 hibernate 甚至 spring 中的包装器。或为我提供此功能的功能。包装器可以通过设置或其他方式。如果我没有在 X 秒内连接到数据源,我只想得到一个异常,不管是什么原因(套接字、数据库、恶劣天气)。我想找个地方来设置这个 X。更糟糕的是,我正在使用的驱动程序 Oracle 驱动程序没有实现 setLoginTimeout() 所以我不能直接使用它。我开始意识到没有办法解决它,只能手动生成我自己的计时器线程。任何人都可以验证上述情况?非常感谢。

4

1 回答 1

1

它很可能与 Hibernate / Spring 本身无关;数据库连接池负责处理连接。

  1. 您的 C3P0 设置是什么?
  2. 您使用的是什么数据库/驱动程序?是否有任何驱动程序特定的设置导致驱动程序本身在报告错误之前等待/重试?
  3. “数据库关闭”是否意味着“完全关闭”?或者这可能是由某种套接字超时引起的?

更新(基于下面的 OP 说明):

DriverManager.setLoginTimeout()oracle 驱动程序不使用。OracleDataSource 有自己的loginTimeout 设置

于 2009-10-23T16:05:41.700 回答