Cosminexus 機能解説
(1) 閉塞順序と処理内容
閉塞順序を次に示します。
- Webアプリケーションの閉塞処理
- CTMのスケジュールキューの閉塞処理※
- フロントEJBの閉塞処理
- 注※
- CTM連携なしの場合は,CTMのスケジュールキューの閉塞処理はありません。
それぞれの閉塞処理での処理内容について説明します。
次の処理が実行されます。
- 新規リクエストの受け付けを終了します。
- 処理中のリクエストは引き続き処理します。
- Webアプリケーションの同時実行数制御のキューにあるリクエストのうち,Webコンテナで処理を開始していないリクエストについては,処理しません。すべて503エラーをクライアントに返します。
次の処理が実行されます。
- 新規リクエストの受け付けを終了します。
- CTMのスケジュールキューに投入されたリクエストのうち,J2EEサーバに振り分けられていないリクエストについては,処理しません。java.rmi.RemoteExceptionをクライアントに返します。
- CTMのスケジュールキューに投入されたリクエストのうち,すでにJ2EEサーバで処理が開始しているリクエストについては,引き続き処理します。
次の処理が実行されます。
- 新規リクエストの受け付けを終了します。
- 処理中のリクエストは,引き続き処理します。
J2EEアプリケーションの構成パターン別の閉塞方法について,J2EEアプリケーションの形態を図に示し,それぞれの閉塞方法を説明します。
図19-10 J2EEアプリケーションの構成パターン
- J2EEアプリケーション1の閉塞方法
J2EEアプリケーション1は,Webアプリケーションを含みます。
この場合,フロントは通常,Webアプリケーションとなります。J2EEアプリケーション1では,Webアプリケーションを閉塞します。
- J2EEアプリケーション2の閉塞方法
J2EEアプリケーション2は,EJBをCTM連携で呼び出します。
この場合,クライアントからの呼び出しが必ずCTMになるので,CTMがフロントとなります。J2EEアプリケーション2では,CTMを閉塞します。
- J2EEアプリケーション3の閉塞方法
J2EEアプリケーション3は,CTMを使用しないでEJBを呼び出します。
この場合,どのEJBがフロントとなるのかJ2EEアプリケーション構成からは判断できません。フロントとなるEJB(フロントEJB)は,ユーザが指定します。J2EEアプリケーション3では,ユーザが指定したフロントEJBを閉塞します。
- J2EEアプリケーション4の閉塞方法
J2EEアプリケーション4は,Webアプリケーションが単独であるJ2EEアプリケーションです。
この場合,Webアプリケーションがフロントとなります。J2EEアプリケーション4では,Webアプリケーションを閉塞します。
- J2EEアプリケーション5の閉塞方法
J2EEアプリケーション5は,EJBが単独であるJ2EEアプリケーションです。
この場合,EJBがフロントとなります。フロントとなるEJB(フロントEJB)は,ユーザが指定します。J2EEアプリケーション5では,ユーザが指定したフロントEJBを閉塞します。
なお,フロントEJBの指定については,マニュアル「Cosminexus システム構築ガイド」のJ2EEサーバのカスタマイズで設定できる主な項目に関する説明を参照してください。
(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アプリケーションを最初に停止してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.