【问题标题】:getting jdbc transaction failed at first hit获取 jdbc 事务在第一次命中时失败
【发布时间】:2016-10-08 08:56:26
【问题描述】:

我在第一次访问数据库时遇到 JDBC 事务失败。我发现一个问题是。我的 mysql 空闲了 10 到 12 个小时。所以可能会在 10 小时后,我将在登录时点击异常

我的配置是

class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>                
                <prop key="hibernate.jdbc.batch_size">50</prop>
                <prop key="hibernate.current_session_context_class">thread</prop>
                <prop key="hibernate.connection.isolation">2</prop>             
                <prop key="hibernate.c3p0.min_size">5</prop>
                <prop key="hibernate.c3p0.max_size">20</prop>
                <prop key="hibernate.c3p0.timeout">300</prop>
                <prop key="hibernate.c3p0.max_statements">50</prop>
                <prop key="hibernate.c3p0.idle_test_period">3000</prop>

            </props>
        </property>
        <property name="packagesToScan" value="com.perennialsys.salesoptimization.vo" />
    </bean>

请为此提供帮助。提前致谢 我从谷歌搜索得到的另一件事是idle_test_period 不应超过timeout。是这个原因吗?

【问题讨论】:

标签: java spring hibernate


【解决方案1】:

数据库服务器可能会在一定时间后关闭其一侧的连接 - 导致您的应用程序出现一些错误,因为它会尝试在服务器端不再可用的连接上发送查询。

为了避免这种情况,您可以让池定期检查连接的有效性。这就是 idle_test_period 的用途。

timeout 是池将从池中删除连接的时间跨度,因为该连接有一段时间没有被签出(使用)并且池包含的连接多于 c3pO.min_size .

请记住,hibernate.c3p0.idle_test_period 值必须永远不要超过 hibernate.c3p0.timeout 的值。否则 C3P0 将永远不会检测到已关闭的连接。

谢谢, 拉杰什

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 2017-03-02
    • 2016-07-04
    • 2013-06-05
    • 2015-02-11
    • 1970-01-01
    • 2014-07-05
    • 2022-10-08
    相关资源
    最近更新 更多