トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

オブジェクト指向プログラミング(C317-2 2005/12/17)

オブジェクト指向プログラミング 第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関係

ファイル名: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

[オブジェクト指向プログラミング(C317-2)]