0

j2ee を使用して Web サービスを作成しています。このWebサービスはDBにアクセスしてデータを挿入/更新しています。データベースへの接続を確立するために接続ドライバーを使用しています。この Web サービスを起動してテストしたところ、メモリ リークの問題が発生したため、トランザクションが失敗しました。取得したエラー メッセージは次のとおりです。

「クエリ処理中にメモリ割り当てに失敗しました」

この問題は、weblogic サーバーを再起動したときに解決されました。この静的接続オブジェクトは、DB トランザクションを処理するために EJB によってのみ使用されます。

この単一の静的接続オブジェクトによってメモリ リークの問題が発生し、トランザクションが失敗することはありますか?

注: トランザクション全体で接続が必要になるため、接続を閉じるようアドバイスしないでください。

4

1 に答える 1

0
  1. サーバー上で構成された接続プール (データソース) から (jndi を使用して) 常に接続を取得する必要があります。
  2. Connection オブジェクトを静的に保つべきではありません
  3. finally ブロックで接続を常に close() する必要があります。(データソースから接続を取得して close() を呼び出すときは、接続が完了したことをプールに伝えるだけです。実際に接続を閉じるわけではありません。

これらを行うと、元気になるはずです。

于 2009-07-15T08:04:34.320 に答える