這是非常奇怪的情況,我認爲它在處理mysql連接對象時最爲常見。以下是場景無法從mysql連接超時後從apache DBCP連接池中獲得連接
在執行sql語句之前,我使用apache DBCP連接池獲取連接對象。一切正常,直到mysql連接超時(8小時)發生。所以在這個連接池之後沒有返回任何連接對象,這使得任何sql操作都等待到下一次重新啓動tomcat服務器。如果沒有DBCP,我們可能會收到communicationException,表示沒有發送或接收數據包。這就是我選擇apache DBCP認爲它會管理連接池的原因。下面是我的代碼
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.apache.commons.dbcp.BasicDataSource;
DataSource dataSource
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(driver);
ds.setUsername(username);
ds.setPassword(password);
ds.setUrl(url + "/" + dbname);
dataSource = ds;
logger.info("Getting connection from DBCP connection pool...");
con = dataSource.getConnection();
logger.info("MYSQL DB Connection Creation Successful...");
我注意到,阿帕奇DBCP使用Singleton模式,創作出如此新的連接對象不被創建,每次我請求連接。請告訴我一個出路,並澄清我,如果我做錯了什麼。我並不是爲以下解決方案
- 提高MySQL的超時(bcoz MySQL的是常見的,我不認爲增加將是一個很好的解決方案)
- 當出現問題時(不是一個漂亮的解決方案,重新啓動Tomcat服務器我們不能總是在那裏,也沒有腳本...... :)
請提出我一個出路。謝謝
你可以分享的日誌的任何異常? – aviad
我得到這行打印「從DBCP連接池獲取連接..」但不是「MYSQL數據庫連接創建成功......」。沒有錯誤信息被打印.. !! – Vivek