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}" />



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM