Java 网络故障后重新建立数据库连接-休眠

Java 网络故障后重新建立数据库连接-休眠,java,hibernate,jakarta-ee,c3p0,Java,Hibernate,Jakarta Ee,C3p0,各位好,, 我正在使用hibernate ORM和oracle数据库。我的cfg文件具有以下属性: <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@url</property> <property na

各位好,, 我正在使用hibernate ORM和oracle数据库。我的cfg文件具有以下属性:

    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="connection.url">jdbc:oracle:thin:@url</property>
    <property name="connection.username">username</property>
    <property name="connection.password">pasword</property>
    <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>                

    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">300</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>    
    <property name="hibernate.c3p0.acquire_increment">3</property>

有没有办法重新建立连接?

如我所见,您已指定何时测试连接,但尚未指定如何测试连接。读一下。我想您应该只添加
preferredTestQuery
,通常类似于
select1 FROM DUAL

另请阅读此处

您需要配置数据库连接池-而不是休眠。请尝试设置
idleConnectionTestPeriod
和适当的
preferredTestQuery
,例如,
从dual
中选择1

有关更多信息,请参阅。如果在
WEB-INF/classes
中创建
c3p0.properties
文件,您将获得最大的控制权,但您需要确保不要在
hibernate.cfg.xml
中覆盖这些属性

我编写了c3p0-config.xml,就像

<c3p0-config>
<default-config>
<!-- Configuring Connection     Testing -->
<!-- property name="automaticTestTable">TEST_EMS_HIBERNATE_CONN</property -->
<property name="checkoutTimeout">0</property>
<property name="testConnectionOnCheckout">true</property>
<property name="testConnectionOnCheckin">false</property>
<property name="preferredTestQuery">SELECT 1 from dual</property>
<!-- Configuring Recovery From Database Outages -->
<property name="acquireRetryAttempts">0</property>
<property name="acquireRetryDelay">1000</property>
<property name="breakAfterAcquireFailure">false</property>
<!-- Configuring to     Debug and Workaround Broken     Client Apps     -->
<property name="unreturnedConnectionTimeout">1800</property>
<property name="debugUnreturnedConnectionStackTraces">true</property>
</default-config>

0
真的
假的
从双重选择中选择1
0
1000
假的
1800
真的
以及系统属性,如:

C3P0\u SYS\u PROPS=“-Dcom.mchange.v2.C3P0.cfg.xml=/C3P0-config.xml-Dcom.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog-Dcom.mchange.v2.log.FallbackMLog.DE
故障\切断\级别=警告“

<c3p0-config>
<default-config>
<!-- Configuring Connection     Testing -->
<!-- property name="automaticTestTable">TEST_EMS_HIBERNATE_CONN</property -->
<property name="checkoutTimeout">0</property>
<property name="testConnectionOnCheckout">true</property>
<property name="testConnectionOnCheckin">false</property>
<property name="preferredTestQuery">SELECT 1 from dual</property>
<!-- Configuring Recovery From Database Outages -->
<property name="acquireRetryAttempts">0</property>
<property name="acquireRetryDelay">1000</property>
<property name="breakAfterAcquireFailure">false</property>
<!-- Configuring to     Debug and Workaround Broken     Client Apps     -->
<property name="unreturnedConnectionTimeout">1800</property>
<property name="debugUnreturnedConnectionStackTraces">true</property>
</default-config>