レッスン 1.4 では、アプリケーションのテスト用 Web プロジェクトの作成について取り上げます。
始める前に、レッスン 1.3 を完了する必要があります。
このレッスンでは、以下を行います。
- Web プロジェクト EJBCounterWeb を作成します。
- Web ページ EJBCount.jsp を作成します。
- サーブレット EJBCount.java を作成します。
- アプリケーションをテストするためのサーブレットを実行します。
- EJBCounterDB を解凍します。
- 必要なデータベースをインポートします。「インポート」ウィザードによって、EJB 3.0 カウンター・プロジェクトにパーシスタンスを提供するデータベースをインポートします。 EJB 3.0 チュートリアル・リソースのインポート
- を展開し、EJBCounterDB.zip をダブルクリックします。
: データベースを WebSphere® Application
Server のインストール・フォルダーにある /derby/databases フォルダーに解凍します。
: データベースを WebSphere Application
Server のインストール・フォルダーにある /derby/databases フォルダーに解凍します。- このデータベース・ディレクトリーに非 root ユーザーのアクセス権限を付与します (everyone アクセスを付与する最も簡単な方法は次のとおりです。chmod ugo+x databases)。
- 解凍されたデータベースに非 root ユーザーの書き込みアクセスを付与します
(例えば、該当のデータベース・ディレクトリーに対するアクセス権限がある場合には、非 root ユーザーとして解凍できます)。
- Java™ EE パースペクティブで、エンタープライズ・アプリケーション・プロジェクトを右クリックし、を選択して、Web プロジェクト・ウィザードを開きます。
- 「Web プロジェクト」ページの「プロジェクト名」フィールドに、EJBCounterWeb と入力します。
- 「プロジェクト・テンプレート」フィールドで、「シンプル」を選択します。
- 「プログラミング・モデル」フィールドで、「Java EE」を選択します。
- デプロイメント・ページにある選択可能な構成オプションのリストで「デプロイメント」をクリックし、「デプロイメント」構成ページを開きます。
- 「ターゲット・ランタイム」のドロップダウン・ボックスで、WebSphere Application Developer v7 または v8 を選択します。
- 「WebSphere バインディングおよび拡張機能のサポートの追加」をクリアします。
- 「Web モジュールのバージョン」フィールドで「3.0」を選択します。
- 「EAR メンバーシップ」フィールドで「EAR にプロジェクトを追加」をクリックします。
- 「EAR プロジェクト名」フィールドに「EJBCounterWebEAR」が表示されることを確認します。
- その他はデフォルトを受け入れて、「終了」をクリックします。
「関連付けられたパースペクティブを開きますか?」と表示される場合には、「いいえ」をクリックします。
- EJBCounterWeb プロジェクトを右クリックして、を選択します。
- 「新規 Web ページ」の「ファイル名」フィールドに、EJBCount.jsp と入力します。
- Web ページ・エディターの「ソース」ビューで、既存のすべてのコードを以下のコードに置換し、CTRL+S キーを押して保存します。
<%@page session="false"%>
<HTML>
<HEAD>
<TITLE>IBM WebSphere EJB3 and JPA1 Counter Sample</TITLE>
<BODY bgcolor="cornsilk">
<H1>EJB 3.0 and JPA 1.0 Counter Sample</H1>
<P>
<B>
This application communicates with the WebSphere Application Server using http requests to increment a stateless EJB 3.0 counter bean which is using a JPA 1.0 entity (ie. keeps a persistent counter in a Derby database table).
</B>
<FORM METHOD=POST ACTION="counter">
<BR/>
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires",0);
String msg = (String) request.getAttribute("msg");
if (msg == null) msg = "";
%>
<B>Click on the Increment button to increment the count</B>
<BR/><BR/>
<INPUT TYPE=SUBMIT VALUE="Increment">
</FORM>
<H3><%=msg%></H3>
</BODY>
</HTML>
- EJBCounterWeb プロジェクトを右クリックし、
を選択します。
- 「新規サーブレット」ページの「Java パッケージ」フィールドに、com.ibm.example.websphere.ejb3sample.counter と入力します。
- 「クラス名」フィールドに EJBCount と入力してから、「次へ」をクリックします。
- 「名前」フィールドに、EJB
Count Servlet と入力します。「URL マッピング」フィールドで、既存のマッピングを編集するために、
/EJB Count Servlet を強調表示してから「編集」をクリックします。
パターンを /counter に置換して、「終了」をクリックします。
- EJBCounterWeb プロジェクトを右クリックして、
「プロパティー」を選択します。
- 「デプロイメント・アセンブリー」、「マニフェスト項目」の順に選択してから、「追加」をクリックします。
- EJBCounterSampleEE6.jar を選択して、「終了」、「OK」の順にクリックします。
- を展開し、EBJCount.java ファイルをダブルクリックします。
Java エディターで開きます。
- 既存のコードを以下のコードに置換し、CTRL+S キーを押して保存します。
package com.ibm.websphere.ejb3sample.counter;
// This program may be used, executed, copied, modified and distributed
// without royalty for the purpose of developing, using, marketing, or distributing.
import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* This servlet demonstrates an EJB3 counter bean with JPA.
*/
public class EJBCount extends HttpServlet {
private static final long serialVersionUID = -5983708570653958619L;
// 注入を使用して EJB を取得する
@EJB private LocalCounter statelessCounter;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String msg = null;
int ejbCount = 0;
try {
ejbCount = statelessCounter.getTheValue();
}
catch (RuntimeException e) {
msg = "Error - getTheValue() method on EJB failed!";
e.printStackTrace();
}
msg = "EJB Count value for Stateless Bean with JPA: " + ejbCount;
// Set attributes and dispatch the JSP.
req.setAttribute("msg", msg);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/EJBCount.jsp");
rd.forward(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String msg = null;
int ejbCount = 0;
try {
ejbCount = statelessCounter.increment();
}
catch (RuntimeException e) {
msg = "Error - increment() method on EJB failed!";
e.printStackTrace();
}
msg = "EJB Count value for Stateless Bean with JPA: " + ejbCount;
// Set attibutes and dispatch the JSP.
req.setAttribute("msg", msg);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/EJBCount.jsp");
rd.forward(req, res);
}
}
- 「エンタープライズ・エクスプローラー」ビューで、を展開し、EJBCount.java ファイルを右クリックして、を選択します。
- Web ブラウザーにカウンター・アプリケーションが開きます。
これで、EJB 3.0 カウンター・チュートリアルは完了です。