• Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see lo


    系统启动,一段时间不操作,然后在来操作时,报错如下:

    Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see logs).
    at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:207)
    at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
    at $java.lang.AutoCloseable$$EnhancerByProxool$$48e70053.getAutoCommit(<generated>)
    at org.hibernate.jdbc.ConnectionManager.isAutoCommit(ConnectionManager.java:212)
    at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:266)
    ... 50 more

    原因很简单:

    mysql的数据库链接的生命周期有个时间限制,超过了时间mysql会关闭连接,这个关闭操作数据库连接池是不知道的,所以使用数据库链接时需要进行测试

    修改Proxool相关配置即可:

    <!--使用前先进行测试-->
    <property name="testBeforeUse" value="true" />

    <!--使用后执行关闭操作前先进行测试-->
    <property name="testAfterUse" value="true" />

    <!--用于保持连接的测试语句 -->

    <property name="houseKeepingTestSql" value="select CURRENT_DATE" />

    <!--日志统计跟踪类型-->
    <property name="statisticsLogLevel" value="ERROR" />

    <!--表示连接的最大活动时间, 如果到某个线程的活动时间大于这个数值,将会杀掉这个线程。默认是5分钟。-->
    <property name="maximumActiveTime" value="${maximumActiveTime}" />


  • 相关阅读:
    如何运行 PPAS上的pgpoolII
    Postmaster主循环的大致流程
    对ListenSocket 的研究(三)
    对ListenSocket 的研究(二)
    对ListenSocket 的研究(五)
    PostgreSQL的postmaser的fork的学习体会
    赛门铁克公告:解密Kneber恶意软件 狼人:
    微软免费杀毒软件MSE最新版本释出 狼人:
    Facebook出现邮件错发故障 隐私安全再受关注 狼人:
    McAfee和Brocade将联合开发网络安全解决方案 狼人:
  • 原文地址:https://www.cnblogs.com/digdeep/p/8193920.html
Copyright © 2020-2023  润新知