0

質問を始める前に、私がJava/J2EE開発者であることを明確にしたいと思います。glassfish JDBC接続プーリングとOracleグローバル・テンポラリ・テーブル同じセッションID

私は、JDBC接続プーリングと背面のOracleデータベースを持つglassfishサーバーを使用しています。 また、いくつかのワークフローを実行するために、Oracleのグローバル一時表を使用しています。

グローバルな一時テーブルにセッション固有のデータを格納しています。

今、私の問題は、ほとんどの場合、接続ごとに同じsessionIdを取得しています。

つまり、glassfish JDBC接続プーリングでglboalテンポラリテーブルを使用することはできません。

もう1つ興味深いのは、接続プールを削除してから、接続ごとに別のセッションIDを取得している場合です。

ご意見をお寄せください。

答えて

2

接続プーリングを使用する場合は、接続がプールに解放されたときにデータベースセッションに状態を残さないようにしてください。これは、次に接続が必要なときに同じ接続を返すという保証がないためです。このような状態の一例として、グローバル・テンポラリ・テーブル(GTT)があり、1つのデータベースセッションまたは1つのJDBC接続に属しています(DBセッションとJDBC接続の間に1-1のマッピングがあります)。別のJDBC接続を使用すると表示されません。 ビジネスロジックでGTTを使用する必要がある場合、このGTTを使用するまでは接続をプールに戻してはいけません。これは、できるだけ早く接続をプールに戻すことを推奨するベストプラクティスに反することに注意してください。代わりに、通常のテーブルを使用して一時的な結果を他の接続を通じてアクセスできるようにすることができます。

関連する問題