オブジェクト指向プログラミング 第18回 2005/12/19
前回の続き
SessionBean?クラスの修正
※クラス名がTestDateBean?であることが前提です。
パッケージ名をsrc.sample.ejbに変更
SessionBean?クラスのコメントを下記のように修正(クラス名がTestDateBean?の場合)
/** * @ejb.bean name="TestDate" * display-name="Name for TestDate" * description="Description for TestDate" * jndi-name="ejb/TestDate" * type="Stateless" * view-type="remote" */ 中略 /** * Business method * @ejb.interface-method view-type = "remote" */ public java.util.Date get() { return new java.util.Date(); }
XDocletの設定
プロジェクトを選択し、右クリックメニューからプロパティを選択 XDoclet Configurationsを選択する。
設定名EJB
Addボタンをクリックし、EJB用設定名EJBを入力これはSessionBean?等を基にインターフェースやXMLファイルを自動生成するための設定。
EJBにはejbdocletを追加する。
- ejbdoclet
- destDir = src
- ejbSpec = 2.0
- deploymentdescriptor
- destDir = src/META-INF
- fileset
- dir = src
- excludesのチェックを外す
- include = **/*Bean.java
- homeinterface
- jboss
- Version=4.0
- destDir = src/META-INF
- packageSubstitution
- package=ejb
- substituteWith=interfaces
- remoteinterface
設定名WEB
サーブレット等の設定webdocletを追加する。
- webdoclet
- destDir = src/WEB-INF
- deploymentdescriptior
- Servletspec = 2.4
- fileset
- dir = src
- excludesを外す
- includes = **/*Servlet.java
- jbosswebxml
- Version = 4.0
XDocletの設定に基づくファイル自動生成
Xdocletの設定に従ってファイルを自動生成する。 プロジェクトを選択、右クリックメニューからRun XDocletを選択
HTML、JSP用フォルダ作成
フォルダwarをsrcと〃レベルに作る。ここに、アプリケーションで使用するHTML、JSPのファイルを置く
index.jspの内容
<%@ page language="java" contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%> <%@ page import="javax.naming.*"%> <%@ page import="sample.interfaces.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>EJBで時計</title> </head> <body> <% try { Context ic = new InitialContext(); TestDateHome dateLHome = (TestDateHome) ic.lookup("java:comp/env/ejb/TestDate"); TestDate datel = dateLHome.create(); java.util.Date date = datel.get(); %> <h1>EJBで時計</h1> 現在時刻は<%=date%>です。 <% } catch (Exception e) { out.println("例外発生" + e.getMessage()); } %> </body> </html>
パッケージ用の設定
ここまでで作成、自動生成したファイルをまとめること。
appication.xmlの作成
src/META-INFを右クリック 新規→その他→JBOSS-IDE→Descriptions→EAR 1.4 Deployment Descriptor
次のリストのように自分のプログラムに合わせて名前を入力する。SessionBean?クラスがTestDateBean?であることが前提です。
項目 | 値 |
---|---|
display-name | アプリケーションの名前 |
ejb | EJBのjarファイル名 |
web-uri | WEB用アーカイブ名(war) |
context-root | WEB用アーカイブから拡張子をのぞいた名前 |
<?xml version="1.0" encoding="UTF-8"?> <application version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"> <display-nameD>TestDateApp</display-name> <module> <ejb>TestDate.jar</ejb> </module> <module> <web> <web-uri>TestDateWeb.war</web-uri> <context-root>/TestDateWeb</context-root> </web> </module> </application>
パッケージファイルの設定
パッケージ生成に必要な設定。次の4つのアーカイブを作る。
- EJBアーカイブ SessionBean?等のクラスファイルをまとめる
- クライアント クライアント用クラスファイル
- WEB HTML、JSPをまとめる
- エンタープライズアプリケーション 上記のアーカイブをまとめたもの
EJB関係
ファイル名:TestDate?.jar
種類 | 値 | prefix | include |
---|---|---|---|
フォルダ | /プロジェクト/bin | なし | sample/ejb/*.class、sample/interfaces/*.class |
ファイル | /プロジェクト/src/META-INF/ejb-jar.xml | META-INF | |
ファイル | /プロジェクト/src/META-INF/jboss.xml | META-INF |
EJBクライアント
ファイル名:TestDateClient?.jar
種類 | 値 | prefix | include |
---|---|---|---|
フォルダ | /プロジェクト/bin | sample/interfaces/*.class |
WEBコンポーネント
ファイル名:TestDateWeb?.war
種類 | 値 | prefix | include |
---|---|---|---|
フォルダ | /プロジェクト/bin | WEB-INF/classes | sample/web/*.class |
〃 | /プロジェクト/war | *.jsp | |
〃 | /プロジェクト/src/WEB-INF | WEB-INF | |
ファイル | /プロジェクト/TestDateClient?.jar | WEB-INF/lib |
エンタープライズアプリケーション
ファイル名:TestejbDateApp?.ear
種類 | 値 | prefix |
---|---|---|
ファイル | /プロジェクト/src/META-INF/application.xml | META-INF |
〃 | /プロジェクト/TestDate?.jar | |
〃 | /プロジェクト/TestDateWeb?.war |
エンタープライズアプリケーション=EJB+クライアント+WEB
XMLファイルの修正
今回の演習では次の2つのXMLファイルを修正する。
web.xml
次の文を追加。
<ejb-ref > <description><![CDATA[Reference to the TestDate EJB]]></description> <ejb-ref-name>ejb/TestDate</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>sample.interfaces.TestDatehHome</home> <remote>sample.interfaces.TestDate</remote> <ejb-link>TestDate</ejb-link> </ejb-ref>
jboss-web.xml
次の文を追加
<ejb-ref> <ejb-ref-name>ejb/TestDate</ejb-ref-name> <jndi-name>ejb/TestDate</jndi-name> </ejb-ref>
パッケージング
プロジェクトを選択し、右クリックメニューからRun Packagingを選択し、実行
デプロイメント
パッケージングしたアプリケーション等をJBossサーバの所定のフォルダへコピーすること。 JBossはデプロイメントされたパッケージを自動的に認識し、それを登録する。 修正されたパッケージはそのままコピーすればそれが反映される。
エンタープライズアプリケーションをデプロイすればよい JBoss-IDEの設定でデプロイメント先を登録しておく
デプロイメント先のディレクトリは jboss-4.0.3SP1?server?default?deploy
動作確認
ブラウザを使いデプロイメントしたアプリケーションの動作を確認する。
http://localhost:8080/TestDateWeb