| Interstage Studio プログラマーズガイド | 
| 目次
			索引    | 
| 第2部 Java編 | > 第4章 Enterprise JavaBeans (EJB)を開発する | > 4.2 開発の流れ | 
作成済みのEnterprise Beanから動作確認を行うためのクライアント(以降では、テストクライアントと呼びます)を生成し、各ビジネスメソッドの動作確認を行います。テストクライアントの生成方法およびテストの方法について説明します。ここでは、EJBテストクライアントをWebアプリケーションとして作成する場合を説明します。

テストクライアント用のWebアプリケーションプロジェクトを作成します。
作成したWebアプリケーションプロジェクトを選択してコンテキストメニューの[プロパティ]の[Javaのビルドパス]で以下を設定します。
メニューから[ファイル] > [新規] > [その他]を選択します。[新規]ダイアログボックスから[J2EE] > [EJBテストクライアント]を選択すると、EJBテストクライアントウィザードが起動されます。
ウィザードでは、EJB JARファイルを指定し、そのEJB JARファイルに含まれるEnterprise Beanのうち動作確認の対象となるものを選択して、テストクライアントを生成します。ここでは、EJBテストクライアントとして、Webアプリケーションを作成するため、[クライアント種別]では、"Web"を選択します。詳細は、"Interstage Studioユーザーズガイド"を参照してください。
"Interstage Studioチュートリアル"のサンプルリソースで提供されている「HelloEJBアプリケーション(Stateless Session Bean)」で、[クライアント種別]に"Web"を選択した場合、以下のテストクライアントソースが生成されます。
/**
 * 
 */
package packagetHelloEJB;
/**
 * @author xxxxx
 *
 */
public class HelloEJBClient {
    /**
     * home.
     */
    private packageHelloEJB.HelloEJBLocalHome home;
    /**
     * eb.
     */
    private packageHelloEJB.HelloEJBLocal eb;
    /**
     * out.
     */
    private TestWebClient out;
    /**
     * constructor.
     * @param out
     */
    public HelloEJBClient(TestWebClient out) {
        this.out = out;
        out.dump("HelloEJB テスト結果");
        try {
            javax.naming.Context ic = new javax.naming.InitialContext();
            home = (packageHelloEJB.HelloEJBLocalHome) ic
                .lookup("java:comp/env/ejb/HelloEJB");
        } catch (javax.naming.NameNotFoundException ex) {
            ex.printStackTrace();
        } catch (javax.naming.NamingException ex) {
            ex.printStackTrace();
        }
    }
    /**
     * create.
     * @return packageHelloEJB.HelloEJBLocal
     */
    public packageHelloEJB.HelloEJBLocal create() {
        try {
            out.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();
            out.dump("    結果=", eb);
            out.dump("    処理時間(ms): " + ms);
        } catch (Exception ex) {
            eb = null;
            ex.printStackTrace();
        }
        return eb;
    }
    /**
     * remove.
     */
    public void remove() {
        try {
            eb.remove();
            eb = null;
        } catch (javax.ejb.RemoveException ex) {
            ex.printStackTrace();
        }
    }
    /**
     * hello.
     * @return String
     */
    public String hello() {
        String rc = (String) null;
        try {
            out.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();
            out.dump("    結果=" + rc);
            out.dump("    処理時間(ms): " + ms);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return rc;
    }
}
/**
 * 
 */
package packagetHelloEJB;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @author xxxxx
 *
 */
public class TestWebClient extends javax.servlet.http.HttpServlet implements
        javax.servlet.Servlet, javax.servlet.SingleThreadModel {
    /**
     * out.
     */
    protected PrintWriter out;
    /**
     * constructor.
     */
    public TestWebClient() {
        super();
    }
    /**
     * doGet.
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // ContentTypeを設定
        response.setContentType("text/html; charset=windows-31j");
        // 出力用PrintWriterを取得
        out = response.getWriter();
        // 出力
        out.println("<html>");
        out.println("<head>");
        out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-31j\">");
        out.println("<title>TestWebClient</title>");
        out.println("</head>");
        out.println("<body>");
        HelloEJBClient eb1 = new HelloEJBClient(this);
        eb1.create();
        eb1.hello();
        eb1.remove();
        out.println("</body>");
        out.println("</html>");
    }
    /**
     * dump.
     * @param s
     */
    public void dump(String s) {
        if (out != null) {
            out.println(s);
            out.print("<br>");
        }
    }
    /**
     * dump.
     * @param s
     * @param obj
     */
    public void dump(String s, Object obj) {
        if (obj instanceof packageHelloEJB.HelloEJBLocal) {
            packageHelloEJB.HelloEJBLocal data = (packageHelloEJB.HelloEJBLocal) obj;
            dump(s + "{");
            dump("    }");
        }
    }
}
必要に応じて、生成されたファイルの編集を行ってください。
テストするEJBアプリケーションと作成したWebアプリケーションをInterstage Application Serverの同一のIJServerに配備および起動します。WebブラウザよりWebアプリケーションの動作確認をしてください。生成ファイルの例「HelloEJBアプリケーション(Stateless Session Bean)」の場合、以下のような結果がWebブラウザに表示されます。
HelloEJB テスト結果 
メソッド名: create 
結果={ 
} 
処理時間(ms): 7 
メソッド名: hello 
結果=こんにちは、EJB 
処理時間(ms): 13

Webアプリケーションの配備、実行およびデバッグする場合はIJServer起動構成を使用できます。詳細は、"Interstage Studioユーザーズガイド"を参照してください。

ワークベンチの初期状態では、ファイルの保存時に自動的にビルドが行われるようにオプションが設定されており、手動でビルドする必要はありません。自動的にビルドを行わないようにしたい場合には、メニューより、[プロジェクト] > [自動的にビルド]を選択し、オプションを解除してください。
テストクライアントを開発するためには、テストするEnterprise Beanに含まれる以下のクラスが必要です。
| 目次
			索引    |