Interstage Studio プログラマーズガイド |
目次
索引
![]() ![]() |
第2部 Java編 | > 第4章 Enterprise JavaBeans (EJB)を開発する | > 4.2 開発の流れ |
作成済みのEnterprise Beanから動作確認を行うためのクライアント(以降では、テストクライアントと呼びます)を生成し、各ビジネスメソッドの動作確認を行います。テストクライアントの生成方法およびテストの方法について説明します。
Interstage Application Server V9.0.1のEJB2.1アプリケーションなど、リモートでアクセスできないEJBアプリケーションは、EJBテストクライアントウィザードで生成されるテストクライアントでの動作確認を行うことができません。
動作確認をする場合は、EJB2.1アプリケーションをLocalインタフェース経由で呼び出すWebアプリケーションを作成するようにしてください。
テストクライアント用のJavaアプリケーションプロジェクトを作成します。
作成したJavaアプリケーションプロジェクトを選択してコンテキストメニューの[プロパティ]の[Javaのビルドパス]で以下を設定します。
メニューから[ファイル] > [新規] > [その他]を選択します。[新規]ダイアログボックスから[J2EE] > [EJBテストクライアント]を選択すると、EJBテストクライアントウィザードが起動されます。
ウィザードでは、EJB JARファイルを指定し、そのEJB JARファイルに含まれるEnterprise Beanのうち動作確認の対象となるものを選択して、テストクライアントを生成します。詳細は、"Interstage Studioユーザーズガイド"を参照してください。
"Interstage Studioチュートリアル"のサンプルリソースで提供されている「HelloEJBアプリケーション(Stateless Session Bean)」の場合、以下のテストクライアントソースが生成されます。
/** * */ package packageHelloEJB; /** * @author xxxxx * */ public class HelloEJBClient { /** * home. */ private packageHelloEJB.HelloEJBHome home; /** * eb. */ private packageHelloEJB.HelloEJBRemote eb; /** * constructor. */ public HelloEJBClient() { TestClient.dump("HelloEJB テスト結果"); try { javax.naming.Context ic = new javax.naming.InitialContext(); java.lang.Object obj = (Object) ic .lookup("java:comp/env/ejb/HelloEJB"); home = (packageHelloEJB.HelloEJBHome) javax.rmi.PortableRemoteObject .narrow(obj, packageHelloEJB.HelloEJBHome.class); } catch (javax.naming.NameNotFoundException ex) { ex.printStackTrace(); } catch (javax.naming.NamingException ex) { ex.printStackTrace(); } } /** * create. * @return packageHelloEJB.HelloEJBRemote */ public packageHelloEJB.HelloEJBRemote create() { try { TestClient.dump(" メソッド名: create"); java.util.Date date_s = new java.util.Date(); eb = home.create(); java.util.Date date_e = new java.util.Date(); long ms = date_e.getTime() - date_s.getTime(); TestClient.dump(" 結果=", eb); TestClient.dump(" 処理時間(ms): " + ms); } catch (Exception ex) { eb = null; ex.printStackTrace(); } return eb; } /** * remove. */ public void remove() { try { eb.remove(); eb = null; } catch (java.rmi.RemoteException ex) { ex.printStackTrace(); } catch (javax.ejb.RemoveException ex) { ex.printStackTrace(); } } /** * hello. * @return String */ public String hello() { String rc = (String) null; try { TestClient.dump(" メソッド名: hello"); java.util.Date date_s = new java.util.Date(); rc = eb.hello(); java.util.Date date_e = new java.util.Date(); long ms = date_e.getTime() - date_s.getTime(); TestClient.dump(" 結果=" + rc); TestClient.dump(" 処理時間(ms): " + ms); } catch (Exception ex) { ex.printStackTrace(); } return rc; } }
/** * */ package packageHelloEJB; /** * @author xxxxx * */ public class TestClient { /** * bDump. */ public static boolean bDump; /** * run. * @param args */ public void run(java.lang.String[] args) { // 動作結果をファイルに保存する場合は、コメントを解除してください // try { // System.setOut(new java.io.PrintStream(new java.io.FileOutputStream("log.txt"))); // } // catch (java.io.FileNotFoundException ex) { // ex.printStackTrace(); // System.exit(1); // } // 動作結果を出力しない場合は、falseを設定してください。 bDump = true; HelloEJBClient eb1 = new HelloEJBClient(); eb1.create(); eb1.hello(); eb1.remove(); } /** * main. * @param args */ public static void main(java.lang.String[] args) { System .setProperty( "com.fujitsu.interstage.j2ee.DeploymentDescriptorClient", "C:\\Interstage\\IDE\\eclipse\\workspace\\TestClient\\src\\META-INF\\application-client.xml"); // System.setProperty("java.naming.factory.initial", "com.fujitsu.interstage.ejb.jndi.FJCNCtxFactoryForClient"); System .setProperty("java.naming.factory.initial", "com.fujitsu.interstage.j2ee.jndi.InitialContextFactoryForClient"); TestClient object = new TestClient(); object.run(args); } /** * dump. * @param s */ public static void dump(String s) { if (bDump) { System.out.println(s); } } /** * dump. * @param s * @param obj */ public static void dump(String s, Object obj) { if (bDump) { if (obj instanceof packageHelloEJB.HelloEJBRemote) { packageHelloEJB.HelloEJBRemote data = (packageHelloEJB.HelloEJBRemote) obj; TestClient.dump(s + "{"}; TestClient.dump(" )"); } } } }
必要に応じて、生成されたファイルの編集を行ってください。
テストクライアントを実行し、動作確認をしてください。生成ファイルの例「HelloEJBアプリケーション(Stateless Session Bean)」の場合、以下のような結果が標準出力に出力されます。
HelloEJBテスト結果 メソッド名: hello 結果=こんにちは、EJB 処理時間(ms): 16
ワークベンチの初期状態では、ファイルの保存時に自動的にビルドが行われるようにオプションが設定されており、手動でビルドする必要はありません。自動的にビルドを行わないようにしたい場合には、メニューより、[プロジェクト] > [自動的にビルド]を選択し、オプションを解除してください。
テストクライアントを開発するためには、テストするEnterprise Beanに含まれる以下のクラスが必要です。
テストクライアントが動作するためには、上記に加え、配備時に生成されるクライアント配布物(クラス)が必要です。
これらのクラスを、クラスパスに設定しておく必要があります。
ビルドパスで、テスト対象となるEnterprise Beanのプロジェクトと[Interstage J2EEライブラリ]を適切に設定し、ワークベンチからテスト対象を配備している場合には、上記は自動的に設定されます。
クライアント種別でJ2EE1.3を選択した場合、J2EE1.3形式のdeployment descriptorが生成されますが、EJBテストクライアントを生成したdeployment descriptorを持つプロジェクトではエンタープライズアプリケーションプロジェクトに追加することはできません。
目次
索引
![]() ![]() |