我在Tomcat下有一個Java應用程序,連接到Postgre和MySQL數據庫。 每次我首次從Java訪問數據庫(過了一段時間),它總是失敗。我查看了Tomcat的日誌,發現這個:第一次訪問JDBC異常
成功發送到服務器的最後一個數據包是85313128毫秒前。是
長於服務器配置的值'wait_timeout'。在應用程序中使用之前,應考慮使用 到期和/或測試連接有效性,增加 服務器爲客戶端超時配置的值,或者使用連接器/ J連接 屬性'autoReconnect = true'來避免此問題。
我已經檢查this question 但並不真正瞭解的溶液(或它是否適用於我的情況),或者爲什麼發生這種情況。
我想問題是Postgre/MySQL數據庫空閒時間太長,但是當我用Java訪問數據庫時,我打開一個連接並在完成時關閉它,所以我不明白爲什麼連接應該保留打開這麼久。
任何人有任何想法?
更新:我沒有使用C3PO
...我連接:
Datasource d = context.lookup("....");
Connection c = d.getConnection();
並與斷開:
c.close();
而MySQL的背景是這樣的:
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="200" maxIdle="15" maxWait="-1" name="jdbc/project" password="...." type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/project" username="..."/>
<ResourceLink global="jdbc/project" name="jdbc/project" type="javax.sql.DataSource"/>
你如何連接?你自己管理連接還是你有連接池處理它?如果是後者,如果你自己掌握連接管理會發生什麼? – cdegroot
您是否調查過錯誤消息中的autoReconnect = true提示?你使用任何像C3P0的SQL池嗎? –
@cdegroot @ZeroPage看到我的更新,請 –