1

データベースへの接続に MYSQL データベースと基本的な JDBC 接続プールを使用しています。アプリケーションは tomcat サーバーにデプロイされます。いくつかの操作の後、データベース接続が null になります。

その理由を教えてください。

4

1 に答える 1

0

これは、いくつかの異なる理由で発生する可能性があります。

  1. close()使いConnection終わったリソースを呼び出さない。Connectionこれにより、すべての が配布されて閉じられなかった後、接続プールが使い果たされる可能性があります。
  2. close()リソースをConnection複数回呼び出す。a を閉じるConnectionとプールに返されるため、別のスレッドがそれを取得できます。もう一度呼び出すとclose()、もう一方のスレッドのために閉じられます。
  3. コードは実際にConnectionインスタンスをnullどこかに設定しています。
  4. リソースを開いてアイドル状態にしたままにしておくConnectionと、タイムアウトになります。コードにクエリ間で長時間実行される操作がある場合は、 を閉じて、Connectionクエリ間で新しいものを取得することを検討してください。
  5. データベース サーバーは何らかの理由で接続を閉じましたが、接続プールはそれを認識していません。これを軽減するために、借用時にテストするように接続プールを構成できます。これは基本的に、接続に対してテストクエリを発行して、アプリに引き渡す前に接続が有効であることを確認します。注: そこにはいくらかのオーバーヘッドがあります。
于 2012-11-16T17:47:33.923 に答える