2012-01-26 30 views
1

Glassfish 3.1、JEE6 JPAアノテーション、Hibernateプロバイダ、およびDerbyデータベースを私の(単純な)アプリケーションで使用しています。私は接続プーリングで多くの困難を抱えているようです。基本的に、私のアプリケーションはセキュリティなしで正常に動作しましたが、セキュリティの領域を作成したので、プールを設定するサイズに関係なく接続が実行されていることがわかりました。明らかに、私のコードでは、サーブレットリクエストが終了した後に接続がプールに返されていないということがあります。Glassfish Derby接続プール、接続がプールに返されない

私はStackOverflowに関するさまざまな投稿とアドバイスを見てきましたが、それらをすべて試しました...何も動作していないようです。

これは私が知りたいと思うもの...グラスフィッシュからログ情報とトレース情報を取得するにはどうすればよいですか?私はプールに接続を戻していない理由を調べる必要があります。このようにして、問題の原因を見つけることができるようになります。

多くの感謝!

+0

finallyブロックまたはどこでもconnection.close()を呼び出しますか?接続を閉じてプールに戻す必要があります。 – oers

+0

私はコミットコードの一部としてentityManager.clear()とentityManager.close()を呼び出します。>私は直接接続にアクセスしません。私はすべきですか?コンテナがEntity Managerの背後にあるコネクションを処理していると思っていました。 –

+0

これで十分です。その常に最初の推測、その接続は、クリーンアップの不足のためにプールに戻っていません。 – oers

答えて

0

常にその最初の推測では、その接続はクリーンアップの不足のためにプールに戻されません。

ていることを確認してください:あなたは、すべてのパスで

を使用

  • すべて閉じEntityManagersを開き、すべての接続に近い

    • それは

      使用しますが、これらの状況を扱うどこでも

      try 
      { 
          //open 
          //work 
      } 
      catch 
      { 
          //exception handling 
      } 
      finally 
      { 
          //close 
      } 
      

      を行い、良い習慣です。

      サイドノート: findbugs/sonarのような静的アナライザーは、これらの状況を検出できます。