Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 運用/監視/連携編


5.5.2 閉塞処理とは

閉塞処理では,閉塞対象のJ2EEアプリケーションを構成する要素のうち,リクエストの受け口となるフロント部分を閉塞し,新規リクエストの受け付けを終了します。

なお,処理中のリクエストは,引き続き処理されます。

〈この項の構成〉

(1) 閉塞順序と処理内容

閉塞順序を次に示します。

  1. Webアプリケーションの閉塞処理

  2. CTMのスケジュールキューの閉塞処理

  3. フロントEJBの閉塞処理

    注※

    CTM連携なしの場合は,CTMのスケジュールキューの閉塞処理はありません。

それぞれの閉塞処理での処理内容について説明します。

(a) Webアプリケーションの閉塞処理

次の処理が実行されます。

  • 新規リクエストの受け付けを終了します。

  • 処理中のリクエストは引き続き処理します。

  • Webアプリケーションの同時実行数制御のキューにあるリクエストのうち,Webコンテナで処理を開始していないリクエストについては,処理しません。すべて503エラーをクライアントに返します。

(b) CTMのスケジュールキューの閉塞処理

次の処理が実行されます。

  • 新規リクエストの受け付けを終了します。

  • CTMのスケジュールキューに投入されたリクエストのうち,J2EEサーバに振り分けられていないリクエストについては,処理しません。java.rmi.RemoteExceptionをクライアントに返します。

  • CTMのスケジュールキューに投入されたリクエストのうち,すでにJ2EEサーバで処理が開始しているリクエストについては,引き続き処理します。

(c) フロントEJBの閉塞処理

次の処理が実行されます。

  • 新規リクエストの受け付けを終了します。

  • 処理中のリクエストは,引き続き処理します。

(2) J2EEアプリケーションの構成パターンと閉塞方法

J2EEアプリケーションの構成パターン別の閉塞方法について,J2EEアプリケーションの形態を図に示し,それぞれの閉塞方法を説明します。

図5‒13 J2EEアプリケーションの構成パターン

[図データ]

なお,フロントEJBの指定については,「5.5.6 実行環境での設定」を参照してください。

(3) 閉塞処理を実行する場合の注意事項

閉塞処理を実行する場合は,次の点に注意する必要があります。

(a) CTM使用時の注意

CTM使用時に閉塞処理を実行する場合の注意事項を次に示します。

  • WebアプリケーションまたはEJBが,CTMを使用して同一J2EEアプリケーション内にあるEJBにアクセスする場合

    閉塞処理が終了した時点で,処理中のリクエストもクライアントに例外を返します。このような形態の場合,該当するWebアプリケーションまたはEJBを呼び出すクライアントの処理を停止したあとに,J2EEアプリケーションを停止してください。

  • CTMから呼び出されているEJBに対して,閉塞処理後にCTMを使用しないでリクエストが投入された場合

    EJBの閉塞処理が実施されていないため,新規リクエストが受け付けられます。このような形態の場合,該当するEJBを呼び出すクライアントの処理を停止したあとに,J2EEアプリケーションを停止してください。

  • usrconf.propertiesのejbserver.ctm.DeactivateTimeOutキーに0を指定している場合

    usrconf.propertiesでは,ejbserver.ctm.DeactivateTimeOutキーには0を指定しないでください。

    0を指定している場合,CTM経由で仕掛り中のリクエストがある状態でアプリケーションを停止しようとすると,リクエストが終了するまで閉塞が完了しません。このため,リクエストが障害などの理由で終了しない場合,強制停止ができなくなります。

(b) J2EEアプリケーションをわたったWebアプリケーション呼び出しの注意

Webアプリケーションでは,javax.servlet.ServletContextのgetContextを使用して,同じWebコンテナ上のWebアプリケーションに対してアクセスできます。アクセスするWebアプリケーションが,別のJ2EEアプリケーションに配置されている場合,呼び出し元になるフロントのWebアプリケーションを含むJ2EEアプリケーションを最初に停止してください。