HomeApache Geronimo v2.0 - JA > Documentation > 9. サンプル・アプリケーション > 9.i. とても簡単なセッション EJB の例

Time Bean の例

セッション Bean を呼び出す JSP ページ の例です。実行結果として次のように表示されます。






簡単に理解できるように、この例ではすべてを削ぎ落として作りました。Geronimo 2.0、Java 1.5、EJB 3.0 を利用しています。

Application Contents  アプリケーションの内容

MyTimeBean.java は時刻を返答する EJB です。org.apache.geronimo.samples.mytimepak というパッケージに EJB を入れてあります。@Stateless アノテーションによって、Geronimo はこのクラスがステートレス・セッション Bean であると認識します。ejb-jar.xml は必要ありません。

MyTimeBean.java
package org.apache.geronimo.samples.mytimepak;

import javax.ejb.Stateless;

@Stateless
public class MyTimeBean implements MyTimeLocal {

	public String getTime() {
		String s = new java.util.Date().toString();
		return s;
	}
}

MyTimeLocal.java はローカルのインターフェースです。 この EJB は同一のサーバー(同一の JVM)上で実行されている JSP のページからしか呼び出されないので、ネットワークからは利用しないローカルのインターフェースとして作ります。

MyTimeLocal.java
package org.apache.geronimo.samples.mytimepak;
public interface MyTimeLocal {
   public java.lang.String getTime() ;
}

openejb-jar.xml does nothing but specifies the module's information.

openejb-jar.xml へはモジュール情報を記述するだけです。

openejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar
		xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
		xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1"
		xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"
		xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
		xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
  <sys:environment>
    <sys:moduleId>
      <sys:groupId>${pom.groupId}</sys:groupId>
      <sys:artifactId>${pom.artifactId}</sys:artifactId>
      <sys:version>${version}</sys:version>
      <sys:type>jar</sys:type>
    </sys:moduleId>
  </sys:environment>
</openejb-jar>

index.jsp は MyTimeBean を利用して時刻を応答します。

index.jsp
<%@ page contentType="text/html" import="org.apache.geronimo.samples.mytimepak.*, javax.naming.* " %>
<html<head><title>Time</title></head><body>
<%
	String s="-"; // Just declare a string
	try {
		// This creates a context, it can be used to lookup EJBs. Using normal RMI you would
		// have to know port number and stuff. The InitialContext holds info like
		// server names, ports and stuff I guess.
		Context context = new InitialContext();
		// MyTimeLocalHome is a reference to the EJB
		MyTimeLocal myTimeLocal = (MyTimeLocal)context.lookup("java:comp/env/ejb/MyTimeBean");
	        // So, just go ahead and call a method (in this case the only method).
		s =  myTimeLocal.getTime();
	}
	catch (Exception e) {
		s=e.toString();
	}
%>
This is the time returned from the EJB: <%=s%>
</body></html>

geronimo-web.xml へはモジュール情報と web-app の url を記述します。

geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"
         xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1"
         xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
         xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1">
  <sys:environment>
    <sys:moduleId>
      <sys:groupId>${pom.groupId}</sys:groupId>
      <sys:artifactId>${pom.artifactId}</sys:artifactId>
      <sys:version>${version}</sys:version>
      <sys:type>war</sys:type>
    </sys:moduleId>
  </sys:environment>
  <context-root>/mytime</context-root>
</web-app>

web.xml は EJB の場所が WEB-INF/classes/org/apache/geronimo/samples/mytimepak ディレクトリーであることを表します。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.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/web-app_2_4.xsd">
	<display-name>MyTimeWeb</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- To refer local EJB's  -->
	<ejb-local-ref>
		<ejb-ref-name>ejb/MyTimeBean</ejb-ref-name>
		<ejb-ref-type>Session</ejb-ref-type>
		<local>org.apache.geronimo.samples.mytimepak.MyTimeLocal</local>
	</ejb-local-ref>
</web-app>

ツールの利用

Apache Maven 2

Maven はエンタープライズ Java プロジェクト向けの有名なオープンソースのビルドツールです。 ビルド作業の負荷を軽減できるように設計されました。Maven では Ant や他の伝統的な make ファイルなどで利用されるタスク・ベースの手法ではなく、宣言的手法を利用して、プロジェクトの構成や内容が定義されます。このことにより、企業全体で開発標準を適用することや、ビルド用スクリプトの記述やメンテナンスに必要な時間を削ることの助けとなります。宣言的で、ライフサイクルに基づく手法を使っていた Maven 1 は、伝統的なビルド方法よりも、多くの人にとって、根本的な発展となり、さらに Maven 2 はこの点を高めました。Maven 2 は次の URL からダウンロードできます。
http://maven.apache.org

アプリケーションのビルド、デプロイ

次のリンクから mytime アプリケーションをダウンロードしてください。
MyTime (注意: このリンク先は最新ではないかもしれません。最新版は下記のソースコードをチェックアウトしてください)

ファイルを解凍すると、mytime ディレクトリーが作られます。

ソースコード

SVN からサンプルのソースコードをチェックアウトすることができます。

svn checkout http://svn.apache.org/repos/asf/geronimo/samples/trunk/samples/mytime

(ヒント: Windows  利用者は、svn を http://subversion.tigris.org/ から入手できます)

ビルド

コマンドプロンプトを利用して mytime ディレクトリーへ移動し、mvn clean install site  コマンドを入力するとビルドされます。mytime フォルダーの下に mytime-ear-2.0-SNAPSHOT.ear が作られます。これで Geronimo アプリケーション・サーバーへ mytime アプリケーションをデプロイする準備ができました。

アプリケーションのデプロイ

Geronimo Console の利用によって、サンプルアプリケーションのデプロイはかなり簡単です。

  1. Console Navigation パネルから Deploy New を選択してください。
  2. Archive 入力欄に mytime フォルダーの mytime-ear-2.0-SNAPSHOT.ear を読み込んでください。
  3. Install ボタンを押してアプリケーションをサーバーへデプロイしてください。

MyTime ウェブ・アプリケーション

サンプル・ウェブ・アプリケーションをテストするには、ブラウザーを開いて http://localhost:8080/mytime を入力してください。