1

我遇到了 Hibernate 和 Mysql 超时错误的问题。我也在使用 c3p0(连接提供程序)的属性。在我的 Hibernate/MySQL 在 8 小时后运行(这是 Mysql 中的默认超时值)后,我有例外。但这无济于事。

自动重新连接的属性也不起作用。

这是我的休眠配置:

<property name="connection_provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    **<property name="connection.autoReconnect"> true</property>
    <property name="connection.autoReconnectForPools">true</property>**
    <property name="connection.is-connection-validation-required">true</property>
    <property name="c3p0.validate">true</property>
    <property name="current_session_context_class">thread</property>
    <property name="cache.use_query_cache">false</property>
    <property name="cache.use_second_level_cache">false</property>
    <property name="c3p0.idle_test_period">20</property>
    <property name="c3p0.timeout">40</property>
    <property name="c3p0.max_size">100</property>
    <property name="c3p0.min_size">1</property>
    <property name="c3p0.acquireRetryAttempts">10</property>
    <property name="c3p0.maxPoolSize">100</property>
    <property name="c3p0.maxIdleTime">300</property>
    <property name="c3p0.maxStatements">50</property>
    <property name="c3p0.minPoolSize">10</property>
    <property name="c3p0.preferredTestQuery">select 1;</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/doqeap</property>
    <property name="connection.user">root</property>
    <property name="connection.password">*******</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.jdbc.batch_size">0</property>
    <mapping></mapping>

请帮我解决这个问题。谢谢

4

1 回答 1

0

如果连接超时是问题,那么连接测试应该通过结帐测试(可靠但会带来客户端可见的性能成本)或检查+空闲测试的测试来消除,枯萎。

查看您的配置参数,看起来您的意思是在结帐和空闲测试上设置测试。我希望 c3p0 会在您的应用程序看到它们之前消除超时异常。如果这还没有发生,看到两件事会很有趣:1)c3p0 的配置,当池初始化时记录在 INFO 中——是 c3p0,通过休眠层,看到你想要的配置?2)您的应用程序遇到陈旧连接时收到的异常。

祝你好运!

于 2012-06-09T01:26:45.590 回答