Cosminexus 機能解説
19.7.2 テストモードで動作しているJ2EEアプリケーションに対する処理
テストモードおよび通常モードで実行しているJ2EEアプリケーションがあるときのアプリケーションサーバの動作について,CTMを使用する場合と使用しない場合に分けて,図に示します。
図19-14 処理の流れ(CTMを使用する場合)
図19-15 処理の流れ(CTMを使用しない場合)
図について説明します。
- クライアント
- クライアントは,本番用とテスト用とで別に用意します。
- J2EEアプリケーション
- 通常モードで動作中のJ2EEアプリケーションのほかに,テストモードでJ2EEアプリケーションをデプロイします。
- 名前空間
- CTMを使用する場合,グローバルネーミングサービス,およびローカルネーミングサービスの名前空間は,本番用とテスト用で別に用意します。CTMを使用しない場合のネーミングサービスも同様に,本番用とテスト用を別に用意します。
- クライアントから検索する名前空間を本番用とテスト用とで切り分けることで,EJBの呼び出しの切り替えをします。
- CTMのスケジュールキュー(CTMを使用する場合だけ)
- CTMのスケジュールキューは,本番用のJ2EEアプリケーションとテスト用のJ2EEアプリケーションで別に生成します。
- DB Connectorおよびデータベース
- J2EEアプリケーションがデータベースを使用する場合は,本番用に定義したDB Connectorを使用します。テスト用のクライアントやJ2EEアプリケーションから,テスト用のデータを生成することで,データベースでの確認をします。
- 参考
- なお,テストモードのJ2EEアプリケーションに含まれるWebアプリケーションからWebサーバ上の静的コンテンツを利用する場合には,次のどちらかの方法で静的コンテンツにアクセスしてください。
- WebアプリケーションからWebサーバ上の静的コンテンツに相対パスでアクセスする場合,あらかじめWebサーバ上のディレクトリ構成をテストモードのコンテキストルート名を含むディレクトリ構成として静的コンテンツを配置し,アクセスするようにしてください。
- WebアプリケーションからWebサーバ上の静的コンテンツに絶対パスでアクセスする場合,あらかじめWebサーバ上で本番用のディレクトリ構成下に配置された静的コンテンツにアクセスするようにしてください。
(2) テストモードで動作しているWebアプリケーションの呼び出し
テストモードで動作している場合,テスト用のクライアントからは,テスト用のURLでWebアプリケーションに接続します。
J2EEアプリケーションをテストモードで開始すると,コンテキストルートに「_test_」のプリフィックスが付いた,テスト用のコンテキストルートが生成されます。このコンテキストルートを含むURLが,テスト用のURLになります。例えば,コンテキストルートが「example」で,本番用のURLが「http://www.hitachi.co.jp/example/index.jsp」である場合,テスト用のURLは「http://www.hitachi.co.jp/_test_/example/index.jsp」となります。
- 注意
- 通常モードで,コンテキストルート名が「/_test_」で始まるWebアプリケーションを使用している場合,コンテキストルート名が「/_test_」で始まらないWebアプリケーションをテストモードで実行すると,コンテキストルート名が重複したり,またはコンテキストルート名のパスの構成要素が包含関係となったりする場合があります。
- 例えば,通常モードでコンテキストルート名が「/_test_/example」のWebアプリケーション1を使用している場合に,コンテキストルート名が「/example」のWebアプリケーション2は,テストモードではコンテキストルート名に「/_test_」が付加されるためコンテキストルート名がWebアプリケーション1と重複することになり実行できません。
- また,コンテキストルート名が「/example/app」のWebアプリケーション3を,テストモードで実行すると,コンテキストルート名は「/_test_/example/app」となり,Webアプリケーション1とはコンテキストルート名のパスの構成要素が包含関係となります。この場合,テストモードで実行することはできますが,包含されるコンテキストルート名を持つWebアプリケーション1にアクセスできない場合があります。詳細については,マニュアル「Cosminexus アプリケーション設定操作ガイド」のJ2EEアプリケーションのコンテキストルート定義に関する説明を参照してください。
(3) テストモードで動作しているEJBの呼び出し
EJBでは,EJBホームオブジェクトおよびEJBローカルホームオブジェクトの取得には,JNDIを利用します。テストモードの場合,通常モード用とは別に名前空間を設けることでJNDIでモードの切り替えをして,EJBを呼び出します。
J2EEアプリケーションをテストモードで開始すると,EJB ホームオブジェクトおよびEJBローカルホームオブジェクトなどは,JNDIで自動変換してから,テストモード用の名前空間に登録および検索されます。クライアント側では,テスト用の名前空間を検索して,EJBホームオブジェクトやEJBローカルホームオブジェクトなどを取得します。JNDIがlookup呼び出し元クライアントのJ2EEアプリケーションのモードを判別して,検索名の変換を自動で実施するので,クライアント側では,テスト用の検索名を意識する必要はありません。
また,テストモードを通常モードに変更しても,lookupの呼び出し元のソースや,WAR,EARなどのDDの変更は必要ありません。
- 注意
- EJBクライアントアプリケーションの場合は,通常モードとテストモードの区別がありません。このため,JNDIでは検索名の自動変換はされませんので,クライアント側ではテストモードの検索名を意識してJ2EEアプリケーションを作成する必要があります。
- また,J2EEアプリケーションにEntity Bean(CMP2.0)を含む場合,J2EEアプリケーションのテスト機能を利用できません。
(4) CTMを使用する場合の注意事項
CTMを使用する場合は,次の内容に注意してください。
(a) スケジュールキューの名称
スケジュールキューの名称は,通常モードの場合,デフォルトでは,J2EEアプリケーションの名称になります。通常モードのキュー名称との衝突を回避するため,テストモードでは,スケジュールキューの名称を,通常モードのキュー名称の先頭に,プリフィックス「_test_」が付けられます。CTMで提供するコマンドを使用してテスト用のキューを操作する場合は,キュー名称を意識する必要があります。
なお,通常モードとテストモードのJ2EEアプリケーションの間では,CTMのスケジュールキューを共有することはできません。
(b) EJBホームオブジェクトのJNDI登録名
J2EEアプリケーションをテストモードで開始するとき,ローカルネーミングサービスと同様にCTMが利用するグローバルネーミングサービスにもテスト用の名前空間を形成し,EJBホームオブジェクトを登録します。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.