Cosminexus V9 アプリケーションサーバ 機能解説 互換編
ここでは,テストモードで実行しているJ2EEアプリケーションに対するクライアントからの処理について説明します。
テストモードおよび通常モードで実行しているJ2EEアプリケーションがあるときのアプリケーションサーバの動作について,CTMを使用する場合と使用しない場合に分けて,図に示します。
図7-3 処理の流れ(CTMを使用する場合)
図7-4 処理の流れ
図について説明します。
テストモードで動作している場合,テスト用のクライアントからは,テスト用のURLでWebアプリケーションに接続します。
J2EEアプリケーションをテストモードで開始すると,コンテキストルートに「_test_」のプリフィックスが付いた,テスト用のコンテキストルートが生成されます。このコンテキストルートを含むURLが,テスト用のURLになります。例えば,コンテキストルートが「example」で,本番用のURLが「http://www.xxx.co.jp/example/index.jsp」である場合,テスト用のURLは「http://www.xxx.co.jp/_test_/example/index.jsp」となります。
EJBでは,EJBホームオブジェクトおよびEJBローカルホームオブジェクトの取得には,JNDIを利用します。テストモードの場合,通常モード用とは別に名前空間を設けることでJNDIでモードの切り替えをして,EJBを呼び出します。
J2EEアプリケーションをテストモードで開始すると,EJB ホームオブジェクトおよびEJBローカルホームオブジェクトなどは,JNDIで自動変換してから,テストモード用の名前空間に登録および検索されます。クライアント側では,テスト用の名前空間を検索して,EJBホームオブジェクトやEJBローカルホームオブジェクトなどを取得します。JNDIがlookup呼び出し元クライアントのJ2EEアプリケーションのモードを判別して,検索名の変換を自動で実施するので,クライアント側では,テスト用の検索名を意識する必要はありません。
また,テストモードを通常モードに変更しても,lookupの呼び出し元のソースや,WAR,EARなどのDDの変更は必要ありません。
J2EEアプリケーション外からテストモードで実行されているEnterprise Beanをルックアップする場合,テストモード用の名前空間を意識してルックアップする必要があります。通常モードで実行されるEnterprise Beanを「HITACHI_EJB/」で始まる文字列でルックアップする場合,同じEnterprise Beanがテストモードで実行されるときには「$HITACHI_TEST/HITACHI_EJB/」で始まる文字列でルックアップします。また,通常モードで実行されるEnterprise Beanを「MyCart」でルックアップする場合,同じEnterprise Beanがテストモードで実行されるときには,「$HITACHI_TEST/MyCart」でルックアップする必要があります。
EJBクライアントアプリケーションからUserTransactionをルックアップする場合に,テストモードのJ2EEアプリケーションを呼び出すときには,次の検索文字列を指定します。
$HITACHI_TEST/HITACHI_EJB/SERVERS/<サーバ名称>/SERVICES/UserTransaction
テストモードを使用している場合,1.と2.で示すオブジェクトの別名に,同じ名前を付けることができます。
ただし,これらのオブジェクトに重複した別名を付けている場合に,どちらかのJ2EEアプリケーションの動作モードを変更して開始しようとすると,エラーが発生します。
エラーが発生する例を次の図に示します。
図7-5 J2EEアプリケーションの動作モードを変更した場合にエラーが発生する例
動作モードを変更した場合にJ2EEアプリケーションを起動できなかったときは,重複しない別名に変更してください。
CTMを使用する場合は,次の内容に注意してください。
スケジュールキューの名称は,通常モードの場合,デフォルトでは,J2EEアプリケーションの名称になります。通常モードのキュー名称との衝突を回避するため,テストモードでは,スケジュールキューの名称を,通常モードのキュー名称の先頭に,プリフィックス「_test_」が付けられます。CTMで提供するコマンドを使用してテスト用のキューを操作する場合は,キュー名称を意識する必要があります。
なお,通常モードとテストモードのJ2EEアプリケーションの間では,CTMのスケジュールキューを共有することはできません。
J2EEアプリケーションをテストモードで開始するとき,ローカルネーミングサービスと同様にCTMが利用するグローバルネーミングサービスにもテスト用の名前空間を形成し,EJBホームオブジェクトを登録します。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.