Cosminexus 機能解説
J2EEアプリケーション実行時間の監視機能を使用するときの,タイムアウト値の設定例と設定値の有効範囲について,Webアプリケーションの場合とEJBの場合に分けて説明します。
Webアプリケーションの場合のタイムアウト値の設定について説明します。
フィルタ/サーブレット/JSP呼び出しのタイムアウト設定について,次の図に示します。
図19-3 フィルタ/サーブレット/JSP呼び出しのタイムアウト設定
各場所のタイムアウト値は,呼び出しの順序を考慮して適切に設定する必要があります。例えば,図中Aの範囲のdoFilterメソッドのタイムアウト値は,メソッドの開始から終了までの処理時間の監視に適用されます。このため,BまたはCの処理時間がAのタイムアウト値に設定した時間に達してしまうと,その時点でタイムアウトされてしまいます。例を次に示します。
表19-1 タイムアウト値の設定例1
場所 | 設定したタイムアウト値 |
---|---|
図中A(フィルタのdoFilterメソッド) | 240秒 |
図中B(サーブレット) | 180秒 |
図中C(JSP) | 120秒 |
アップロード,ダウンロードを実施するサーブレット/JSP内の処理の延長では,クライアントとの通信が発生する場合があります。この場合,アップロード中,ダウンロード中はサーブレット/JSPの処理中として扱われるため,メソッドの実行時間が監視されます。
このため,アップロード,ダウンロードを実施するサーブレット/JSPは,クライアントとの通信遅延などを考慮してタイムアウトを設定する必要があります。特に,ダウンロードについては,ブラウザでダウンロード確認用のダイアログを表示して,クライアントに,ダウンロードの確認を求める場合があります。この場合,ダウンロードするデータ量によっては,クライアント上でユーザがダウンロード確認用のダイアログで操作をするまで,ダウンロードが完了しない(サーブレット/JSPの処理が完了しない)ことがあるので注意してください。
なお,フィルタを経由する場合は,該当するフィルタに関しても同様の注意が必要です。
サーブレットへの初回アクセス時には,サーブレットのserviceメソッドに設定したタイムアウト値が有効になります。
ただし,DD(web.xml)の<load-on-startup>タグを設定していないサーブレット/JSPの場合,初回リクエスト時には,initメソッドが実行されます。このとき,initメソッドには,該当するサーブレット/JSPのserviceメソッドに設定したタイムアウト値が有効になります。
また,サーブレット/JSPがserviceメソッドの処理で利用できないことを示す,javax.servlet.UnavailableExceptionをスローした場合に実行されるdestroyメソッドにも,該当するサーブレット/JSPのserviceメソッドに設定したタイムアウト値が適用されます。
サーブレットへの初回リクエストのタイムアウト設定について,次の図に示します。
図19-4 サーブレットへの初回リクエストのタイムアウト設定
フィルタを経由したサーブレットおよびJSPの初回リクエストのタイムアウト設定について,次の図に示します。
図19-5 フィルタを経由したサーブレットの初回リクエストのタイムアウト設定
図19-6 フィルタを経由したJSPの初回リクエストのタイムアウト設定
フィルタの処理の延長で,サーブレット/JSPが呼び出される場合のフィルタのタイムアウト値は,フィルタの延長で呼び出されるサーブレット/JSPのタイムアウト値を考慮して設定する必要があります。
例えば,図19-6の場合,図中Aの範囲のフィルタのタイムアウト値は,フィルタの処理時間に適用されます。このため,BまたはCの処理時間がAのタイムアウト値に設定した時間に達してしまうと,その時点でタイムアウトされてしまいます。図19-6の場合の例を次に示します。
表19-2 タイムアウト値の設定例2
場所 | 設定したタイムアウト値 |
---|---|
図中A(フィルタ) | 240秒 |
図中BおよびC(サーブレット) | 180秒 |
また,DD(web.xml)の<servlet>タグを定義していて,<load-on-startup>タグを設定していないサーブレット/JSPの場合で,初回リクエストをフィルタのdoFilterメソッドの延長で実行するとき,サーブレット/JSPのinitメソッドが実行されます。initメソッドが実行されるタイミングを次の表に示します。
表19-3 initメソッドが実行されるタイミング
対象 | <servlet>タグの定義 | <load-on-startup>タグの定義 | initメソッドの実行されるタイミング |
---|---|---|---|
サーブレット | あり | なし | doFilterメソッドが呼び出される前 |
なし | なし | doFilterメソッドの延長 | |
JSP | あり | なし | doFilterメソッドの延長 |
なし | なし | doFilterメソッドの延長 |
このとき,initメソッドのタイムアウト値には,次のどちらかの値が適用されます。
Stateless Session Beanのビジネスメソッド呼び出しのタイムアウト設定について,次の図に説明します。なお,ほかのBeanの種類(Stateful Session Bean,Entity Bean,,Message-driven Bean)についても同様に設定できます。
図19-7 Stateless Session Beanのビジネスメソッド呼び出しのタイムアウト設定
ビジネスメソッドのタイムアウト値に設定した時間を超えると,タイムアウトが発生します。
なお,EJBのメソッド呼び出しの延長で呼び出されるコールバックは,業務処理の一部であるため,タイムアウト値を設定するときには,コールバックメソッドの実行時間を考慮してください。各メソッドで呼び出されるコールバックについては,「19.3.5(2) Enterprise Beanのメソッド呼び出し処理でのタイムアウト値の設定方法」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.