tomcat dbcp 基於jndi配置時出現java.sql.SQLException: Already closed

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   os   io   資料   


最近觀察生產環境發現一個現象,一段時間不操作,再重新操作時,資料庫連接第一次會出現:java.sql.SQLException: Already closed.,如下:




資料來源是用tomcat dbcp 基於jndi組態管理的,查了下,如下:


原因:

You‘re probably running into the fact that MYSQL closes connections  which have been open "too long". 
Probably if you make the request to the server again, you‘ll find that  it works because the connection is reopened. 


解決方案:

One way to deal with this is to add the following to your context.xml  Resource: 

validationQuery="select 1"  (基於mysql)

validationQuery="select 1 from dual"  (基於oracle)


代價:

This causes a very cheap test query to always be run first; if the  connection has been closed, this gets the failure, and 
then a new connection is opened.


細想下原來用weblogic jdbc jndi的配置有一個專門的配置項來配置這個test query,配置tomcat時粗心大意了 :(  


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.