Top / Java関連 / JavaEE5 / EJB3.0(2)

EJB3.0(2)

Java関連/JavaEE5/EJB3.0(1)の続きです。

EJBプロジェクトの作成

プロジェクトエクスプローラーの何もないところで右クリックし、コンテキストメニューを開き、
[EJBプロジェクト]を新規作成します。
http://www.techch.com/wikiparts/JavaEE_WTP_045.png

 

新規EJBプロジェクトの作成ウィザードが開かれます。
プロジェクト名として、ここでは[Hello]にします。EJBモジュールバージョンは[3.0]を選択します。
構成は、[GlassFish v2.1 JavaEE5 デフォルト構成]にします。
EARメンバーシップは、EARにプロジェクトを追加のチェックボックスにチェックを入れ、
EARプロジェクト名として、前回作成したEJB3を指定し、[次へ]のボタンをクリックします。
これにより、EARプロジェクトのコンパイルエラーが消えてなくなるはずです。
http://www.techch.com/wikiparts/JavaEE_WTP_019.png

 

EJBモジュール設定の構成についてのウィザードが開きます。
[ライアントのインタフェースとクラスを持つEJBクライアントJARモジュールを作成する]のチェックをはずし、
デプロイメント記述子の作成にチェックを入れ、[完了]ボタンをクリックします。
チェックを外したのは、EJBクライアントアプリをWebプロジェクトにしたかったためです。
http://www.techch.com/wikiparts/JavaEE_WTP_025.png

 

すると、EJBプロジェクトのひな形が作成されます。
http://www.techch.com/wikiparts/JavaEE_WTP_046.png

 

デプロイメント記述子を展開し、セッションBeanを選択し、右クリックをして、[新規]-[セッションBean]を選択します。
http://www.techch.com/wikiparts/JavaEE_WTP_047.png

 

EJB 3.0セッションBean作成のウィザードが起動します。
ここでは、Javaパッケージとして、[com.techch.ejb3.local]を指定し、クラス名は、[HelloBean]にします。
状態タイプは、[ステートレス]、ローカルビジネスインタフェースは、Eclipseの指定のままとしておきます。
[次へ]のボタンをクリックします。
http://www.techch.com/wikiparts/JavaEE_WTP_022.png

 

次にセッションBean固有情報の設定を行います。
Bean名としてHelloBean、マップされた名前は空欄のまま、トランザクションタイプは、コンテナーであることを確認し、
[完了]のボタンをクリックします。
http://www.techch.com/wikiparts/JavaEE_WTP_023.png

 

ここまででステートレスセッションビーンのひな形作成ができました。
http://www.techch.com/wikiparts/JavaEE_WTP_048.png

ステートレスセッションビーンの作成

ひな形作成されたStateless SessionBeanを編集します。
元ネタは、Java関連/JavaEE5/書籍の紹介の書籍です。

 
package com.techch.ejb3.local;
import javax.ejb.Local;

@Local
public interface HelloBeanLocal {

	public String sayHello(String message);
	
}
package com.techch.ejb3.local;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class HelloBean
 */
@Stateless
public class HelloBean implements HelloBeanLocal {

    /**
     * Default constructor. 
     */
    public HelloBean() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public String sayHello(String message) {
        return "Hello," + message + "!";
    }

}

http://www.techch.com/wikiparts/JavaEE_WTP_036.png

 

http://www.techch.com/wikiparts/JavaEE_WTP_037.png

 

EJBクライアントの作成

続いて、HelloBeanクラスのEJBクライアントとなるサーブレットを作成します。
サーブレットということで、ウェブアプリケーションコンテナが必要になります。
プロジェクトエクスプローラーの何もないところで、右クリックをしてコンテキストメニューを開きます。
開いたら、[新規]-[動的Webプロジェクト]を選択します。
http://www.techch.com/wikiparts/JavaEE_WTP_049.png

 

動的Webプロジェクトのウィザードが開始されます。
プロジェクト名として、[HelloWeb]、EARメンバシップとして、[EARにプロジェクトを追加]にチェックを入れ、[次へ]のボタンをクリックします。
http://www.techch.com/wikiparts/JavaEE_WTP_050.png

 

ウェブモジュールの設定画面に遷移します。デフォルトのままでよいでしょう。[完了]のボタンをクリックしてください。
http://www.techch.com/wikiparts/JavaEE_WTP_051.png

 

動的Webプロジェクトのひな形が作成されます。
http://www.techch.com/wikiparts/JavaEE_WTP_052.png

 

ソースフォルダに[com.techch.ejb3.local.web]パッケージを作った後、サーブレットを作成します。
パッケージの作り方の説明については、割愛させていただきます。
作成したパッケージを選択し、右クリックから、[新規]-[サーブレット]を選択します。
http://www.techch.com/wikiparts/JavaEE_WTP_024.png

 

サーブレット作成のウィザードが開始されます。
http://www.techch.com/wikiparts/JavaEE_WTP_028.png

 

クラス名として、[HelloServlet]を指定し、[次へ]のボタンをクリックします。
http://www.techch.com/wikiparts/JavaEE_WTP_029.png

 

初期化パラメータやURLマッピングの指定です。
ここでは、説明の欄に、「EJB3.0ステートレスなセッションビーンの呼び出し」と指定しています。
このフィールドは必須ではありません。
サーブレットのURLマッピングなどは、デフォルトのままでよいでしょう。
[次へ]のボタンをクリックしてください。
http://www.techch.com/wikiparts/JavaEE_WTP_030.png

 

修飾子などを指定します。スタブとして、doGetメソッドのみ作成するようにします。
doPostに入っているチェックは外してください。
http://www.techch.com/wikiparts/JavaEE_WTP_031.png

 

HelloServletクラスのひな形が作成されました。
http://www.techch.com/wikiparts/JavaEE_WTP_032.png

 

動的Webプロジェクトである[HelloWeb]プロジェクトから、EJBのHelloBeanを参照できなければ、
コンパイルエラーになってしまいます。
HelloWebのプロジェクトプロパティを開き、左ペインのJavaEEモジュール依存関係を選択してください。
J2EEモジュールタブから、Hello.jarにチェックをいれてください。
http://www.techch.com/wikiparts/JavaEE_WTP_033.png

 

続いて、サーブレットのソースコードを入力します。

package conm.techch.ejb3.local.web;

import java.io.IOException;
import java.io.PrintWriter; 

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.techch.ejb3.local.HelloBeanLocal;

/**
 * Servlet implementation class HelloServlet
 */
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		try {
			// イニシャルコンテキストを取得する。
			Context init_context = new InitialContext();
			
			// セッションBeanオブジェクトをJNDIルックアップより取得する。
			HelloBeanLocal hello = (HelloBeanLocal) init_context.lookup("java:comp/env/ejb/HelloRefName");
			
			// ビジネスメソッドを呼び出す。
			String result = hello.sayHello("Stateless Local SessionBean");
			
			// プレーンテキストを出力する。
			response.setContentType("text/plain;charset=Windows-31J");
			PrintWriter out = response.getWriter();
			
 			out.println(result);

		} catch (NamingException e) {
			throw new RuntimeException(e);
		}
	}

}

http://www.techch.com/wikiparts/JavaEE_WTP_034.png

 

http://www.techch.com/wikiparts/JavaEE_WTP_035.png

 

web.xmlの編集

続いて、web.xmlの編集を行います。
ウェブコンテナは、ローカルのセッションBeanを参照しているため、コンテナにEJBの参照を伝えなければなりません。
以下のコードを、[HelloWeb]のweb.xmlに追加してください。

 
 <ejb-local-ref>
   <description></description>
   <ejb-ref-name>ejb/HelloRefName</ejb-ref-name>
   <ejb-ref-type>Session</ejb-ref-type>
   <local-home></local-home>
   <local>com.techch.ejb3.local.HelloBeanLocal</local>
 </ejb-local-ref>
 

http://www.techch.com/wikiparts/JavaEE_WTP_038.png

 

添付は、自分の環境に配置されていたweb.xmlです。

プロジェクトのデプロイ

サーバービューから、EJB3のエンタープライズアプリケーションをJ2EEコンテナにデプロイします。
サーバービュー上のローカルホストのGlassFish v2.1 JavaEE5を選択のうえ、右クリックでコンテキストメニューを開き、
[プロジェクトの追加および除去]を選択します。
http://www.techch.com/wikiparts/JavaEE_WTP_039.png

 

http://www.techch.com/wikiparts/JavaEE_WTP_040.png

 

http://www.techch.com/wikiparts/JavaEE_WTP_041.png

 

サーバーの起動

ここまで長かったですが、ようやくサンプルアプリを試す時間になりました。
サーバービューから、GlassFishサーバーを選択し、コンテキストメニューから[開始]を選択してください。
起動できたでしょうか?>できない?、設定の見直しが必要ですね。 http://www.techch.com/wikiparts/JavaEE_WTP_053.png

 

サーバーの起動ができたら、URLにアクセスしてみます。
ありゃ、失敗してしまいました。どうやら、タイプミスのようです。ejbとなっていなければならないところ、ejvになっています。
http://www.techch.com/wikiparts/JavaEE_WTP_043.png

 

修正後の結果です。
うまくいきました。 http://www.techch.com/wikiparts/JavaEE_WTP_044.png

 

WTPを使用すると、自動的にひな形を作成してくれるので、とても便利です。
Tomcatプラグインは、過去の遺物です。開発効率が5倍は、アップすること間違いなしです。

 

以上です。

最新の10件
2010-07-09 2010-07-08 2010-07-07 2010-06-29 2010-06-28
人気の20件
Counter: 1541, today: 1, yesterday: 0

添付ファイル: fileweb.xml 144件 [詳細] fileHelloServlet.java 124件 [詳細] fileHelloBean.java 134件 [詳細] fileHelloBeanLocal.java 119件 [詳細]