Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

9.11.6 コネクションの自動クローズ

ユーザプログラムがオープンしたリソースのコネクションは,ユーザプログラムでクローズする必要があります。例外発生などの理由で,ユーザプログラムがコネクションをクローズすることができない場合,WebコンテナやEJBコンテナが自動的にコネクションをクローズする機能があります。

コネクション自動クローズ機能は,機能によって有効と無効を切り替えることができます。コネクションの自動クローズの方法と切り替えについて次の表に示します。

表9-40 コネクション自動クローズの方法と機能の切り替え

自動クローズの方法 有効と無効の切り替え 備考
Webコンテナによるコネクション自動クローズ ※1※2
EJBコンテナによるコネクション自動クローズ ×※1 常に有効になります。

(凡例) ○:切り替えできる ×:切り替えできない

注※1
対象リソースは,リソースアダプタのコネクションとなります。

注※2
Webコンテナによるコネクションの自動クローズ機能は,デフォルトでは有効となっています。無効にする場合は,J2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。

<この項の構成>
(1) Webコンテナによるコネクション自動クローズ
(2) EJBコンテナによるコネクション自動クローズ
(3) コネクション自動クローズが実行されたことを確認する方法
(4) 注意事項

(1) Webコンテナによるコネクション自動クローズ

サーブレットやJSPのサービスメソッド内で,取得・オープンされたJDBCコネクションのうち,メソッドの実行完了時にクローズが実行されていないコネクションに対して,J2EEコンテナ側で自動的にコネクションをクローズします。これによって,オープンされたまま蓄積しているコネクションを,自動でクローズできます。

なお,コネクションの自動クローズ機能は,サーブレット内部の別のメソッド,または外部のクラスでコネクションを取得・利用した場合にも有効です。

Webコンテナによるコネクション自動クローズは,サーブレットやJSPのserviceメソッドが完了したときに実行されます。

(2) EJBコンテナによるコネクション自動クローズ

例外発生などの理由で,EJB内で取得したリソースのコネクションをユーザがクローズできない場合に,EJBコンテナが自動的にコネクションをクローズして解放する機能です。

EJBコンテナによるコネクションの自動クローズは,次のタイミングで実施されます。

(3) コネクション自動クローズが実行されたことを確認する方法

コネクション自動クローズが実行されたことは,メッセージログまたはPRFトレースで確認できます。

テスト実行時や障害調査時など,性能を考慮しなくてよい場合は,メッセージログによって確認することをお勧めします。実運用時に確認したい場合は,PRFトレースによって確認することをお勧めします。

(a) メッセージログで確認する方法

ログレベルを「Warning」に設定してください。

コネクション自動クローズが実行された場合は,J2EEサーバのメッセージログにKDJE31010-Wが出力されます。

ログレベルの設定方法については,マニュアル「Cosminexus システム構築ガイド」のJ2EEサーバのログ取得の設定の説明を参照してください。

(b) PRFトレースでの確認方法

JCAコンテナの機能レイヤのPRFトレース取得レベルを「詳細」に設定してください。

コネクション自動クローズが実行された場合は,PRFトレースファイルに次のイベントIDが出力されます。

PRFトレースの取得レベルの設定方法については,マニュアル「Cosminexus システム構築ガイド」のJ2EEサーバのログ取得の設定の説明を参照してください。また,機能レイヤごとのPRFトレース取得レベルの設定方法については,マニュアル「Cosminexus リファレンス コマンド編」のcprflevelコマンドまたはcprfstartコマンドの説明を参照してください。

(4) 注意事項

Servlet/JSPでユーザが生成したスレッド(ユーザスレッド)で取得したコネクションは,自動クローズされません。