私はTomcatの下にJavaアプリケーションを持っており、PostgreとMySQLデータベースに接続しています。 初めてJavaからデータベースにアクセスするたびに、常に失敗します。私はTomcatのログをチェックし、これを見つけました:初回アクセス時のJDBC例外
最終的にサーバーに送信されたパケットは85,313,128ミリ秒前です。サーバが設定した 'wait_timeout'の値よりも長い場合は
です。 アプリケーションの使用前に接続の有効期限が切れているかどうかを検討してください。 クライアントタイムアウトの設定値を増やすか、コネクタ/ J接続 プロパティ 'autoReconnect = true'を使用してこの問題を回避してください。
私はthis question をチェックしましたが、本当に解決策を理解していない(または、それは私の場合に適用される場合)、または、なぜこれが起こっています。
Postgre/MySQLデータベースがあまりにも長くアイドルだったのが問題だと思いますが、Javaでデータベースにアクセスすると接続が開き、終了すると常に閉じます。なぜ接続が残っているのかわかりません長い間開いている。
誰にもアイデアはありますか?
UPDATE:
私は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私の更新を見てください。 –