Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第3章 Enterprise JavaBeans (EJB)を開発する | > 3.2 開発の流れ |
作成済みのEnterprise Beanから動作確認を行うためのクライアント(以降では、テストクライアントと呼びます)を生成し、各ビジネスメソッドの動作確認を行います。テストクライアントの生成方法およびテストの方法について説明します。
テストクライアント用のPure Javaプロジェクトを作成します。
プロジェクト新規作成ウィザードの[Java設定]において、以下を設定します。
EJBテストクライアント生成ウィザードはメニューバーからも起動できます。
Apdesignerのメニューから[ファイル] > [新規] > [その他]を選択します。[新規]ダイアログボックスから [J2EE] > [EJBテストクライアント]を選択すると、EJBテストクライアント生成ウィザードが起動されます。
ウィザードでは、EJB JARファイルを指定し、そのEJB JARファイルに含まれるEnterprise Beanのうち動作確認の対象となるものを選択して、テストクライアントを生成します。詳細は、"Apdesignerユーザーズガイド"を参照してください。
Apworksの"チュートリアル"のサンプルリソースで提供されている「HelloEJBアプリケーション(Stateless Session Bean)」の場合、以下のテストクライアントソースが生成されます。
/** * */ package packageHelloEJB; /** * @author xxxxx * */ public class HelloEJBClient { /** * home. */ private packageHelleEJB.HelloEJBHome home; /** * eb. */ private packageHelleEJB.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 = (packageHelleEJB.HelloEJBHome) javax.rmi.PortableRemoteObject .narrow(obj, packageHelleEJB.HelloEJBHome.class); } catch (javax.naming.NameNotFoundException ex) { ex.printStackTrace(); } catch (javax.naming.NamingException ex) { ex.printStackTrace(); } } /** * create. * @return packageHelleEJB.HelloEJBRemote */ public packageHelleEJB.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\\APW\\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 packageHelleEJB.HelloEJBRemote) { packageHelleEJB.HelloEJBRemote data = (packageHelleEJB.HelloEJBRemote) obj; TestClient.dump(s + "{"}; TestClient.dump(" )"); } } } }
必要に応じて、生成されたファイルの編集を行ってください。
テストクライアントを実行し、動作確認をしてください。生成ファイルの例「HelloEJBアプリケーション(Stateless Session Bean)」の場合、以下のような結果が標準出力に出力されます。
HelloEJBテスト結果 メソッド名: hello 結果=こんにちは、EJB 処理時間(ms): 16
Apdesignerの初期状態では、ファイルの保存時に自動的にビルドが行われるようにオプションが設定されており、手動でビルド作業を行う必要はありません。自動的にビルドを行わないようにしたい場合には、メニューより、[プロジェクト] > [自動的にビルド]を選択し、オプションを解除してください。
テストクライアントを開発するためには、テストするEnterprise Beanに含まれる以下のクラスが必要です。
テストクライアントが動作するためには、上記に加え、配備(Deployment)時に生成されるクライアント配布物(クラス)が必要です。
これらのクラスを、クラスパスに設定しておく必要があります。
目次 索引 |