我使用了SQL Server 2008和得到警告/異常列表並未中斷或不能正常斷開數據庫的連接
WARNING [Tomcat JDBC Pool Cleaner[510210701:1481713957404]] org.apache.tomcat.jdbc.pool.ConnectionPool.suspect Connection has been marked suspect, possibly abandoned PooledConnection[[email protected]][67975 ms.]:java.lang.Exception
後動態Java Web應用程序(的Tomcat 8.0.15,Java EE的7網頁)
相當經常我想知道我的源代碼深處的某處我忘了將JDBC或Hibernate連接斷開連接到數據庫。我想以某種方式列出它們。
定期
static
{
try {
Context context = new InitialContext();
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/sqlserv");
} catch (NamingException ex) {
Logger.getLogger(Basisverbindung.class.getName()).log(Level.SEVERE, null, ex);
}
}
做這項工作,在我的hibernate.cfg.xml這是相同的:
<property name="hibernate.connection.datasource">java:comp/env/jdbc/sqlserv</property>
我通過#2看了一下,發現我已經諮詢了只有幾個條目(甚至upvoted):
- Tomcat 7 connection pooling error
- WebApp (Tomcat-jdbc) Pooled DB connection throwing abandon exception
- https://dba.stackexchange.com/questions/114759/tomcat7-jdbc-connection-pool-connection-has-been-abandoned
但問題仍然存在,或一段時間後再次出現,所以我想找到一種方法如何追查,我忘了關閉連接。在我的Tomcat上,還有一個PSI Probe正在運行,告訴我在請求中會出現一些錯誤,並且有時候會延長響應時間。 我在那裏看到一個很好的請求列表,但不知道哪些請求被放棄。
SQL-Server Management Studio中的ActivityMonitor沒有太多的幫助,它列出了我知道它們關閉(或很好,應該是)的一些進程。
什麼是分析這類問題的最佳方法?
我正在使用tomcat-jdbc並設置了兩個選項 – Qohelet
......並且您沒有看到堆棧跟蹤的連接或Statement對象未正確關閉的位置? –
我正在使用一個處理連接分配的靜態類(我可以發佈代碼的其餘部分,但它不是太好)。所以大多數堆棧只是指那個類... – Qohelet