stateless session beans
DESCRIPTION
Stateless Session Beans. EJB 3.0 コース 第 3 回. ここでの目標. “ Oracle Application Server EJB 3.0 Preview ” の概要を理解する。 Stateless Session Bean の概要を理解する。. Oracle Application Server EJB 3.0 Preview. EJB 3.0 の実装. 現時点では、主に次の3つ Resin 3.0 Jboss EJB 3.0 Preview Oracle Application Server EJB 3.0 Preview. - PowerPoint PPT PresentationTRANSCRIPT
1
Stateless Session Beans
EJB 3.0 コース第 3 回
2
ここでの目標 “Oracle Application Server EJB 3.0 Previe
w” の概要を理解する。 Stateless Session Bean の概要を理解す
る。
3
Oracle Application Server EJB 3.0 Preview
4
EJB 3.0 の実装 現時点では、主に次の3つ
Resin 3.0 Jboss EJB 3.0 Preview Oracle Application Server EJB 3.0 Preview
5
Oracle Application Server EJB 3.0 Preview 今回の実習で利用 “EJB 3.0 Early Draft 2” を実装している O/R Mapping Framework として、” Oracl
e TopLink” を採用
6
Oracle TopLink Oracle 社の O/R Mapping Framework EJB 3.0 の仕様策定に多大な影響を与え
る 来年リリース予定の Java EE 5 では、 P
ersistence API の Reference Implementation (RI = 参照実装 ) として、 TopLink が使われる予定。
7
インストール (1) Zip ファイルをダウンロードして、展開 展開先のディレクトリに、環境変数 ORA
CLE_HOME を設定しておく。 %ORACLE_HOME%¥bin に PATH を通して
おく。
8
インストール (2) 環境変数 JAVA_HOME の設定
Java は J2SE 5.0 が必要 ANT のインストールと環境変数 ANT_HO
ME の設定
9
Stateless Session Beans
10
Session Beans (1) クライアントが必要に応じて呼び出す処
理をまとめたもの クライアントの特定のセッションに対応 セッション開始と同時に生成され、セッ
ション終了時に消滅
11
Session Beans (2) Stateless Session Beans
インスタンスに固有のフィールドがないため内部状態を持たず、ユーティリティクラスのように振る舞う
Statefull Session Beans 内部状態を持っている
12
サンプルアプリケーション (1) %ORACLE_HOME%¥demo¥howtoejb30sls
b について解説する HelloWorld サンプルアプリケーション Ant でコンパイル、 J2EE サーバへの配
備 ( デプロイ ) を実行
13
サンプルアプリケーション (2) J2EE サーバ側 (EJB)
HelloWorld.java HelloWorldBean.java
クライアント側 HelloWorldClient.java
そのほか、いくつかの設定ファイル
14
インタフェースの作成
15
HelloWorld.java (1)import javax.ejb.Remote;@Remote
public interface HelloWorld { public void sayHello(String name);}
16
HelloWorld.java (2) Stateless Session Beans が公開するメ
ソッドを定義しているインタフェース 従来の EJB では、 EJB オブジェクトイン
タフェースを継承する必要があった EJB 3.0 では、 POJI + Annotation のスタ
イルとなる
17
@Remote このインタフェースは、 Remote (= 別のマシ
ン)で実行される可能性がある @Remote アノテーションを付加することで、
この EJB の機能を別のマシンから呼びだすことができるようになる
具体的には、 RMI/IIOP が用いられる
@Remote public interface HelloWorld {…}
18
@Local 同一の Java Virtual Machine からしか動
かさない場合、 @Local アノテーションを付加する
@Local public interface HelloWorld {…}
19
@Remoteと@Local 何もアノテーションを付けなかった場合、
@Local を付けるのと同じことになる
public interface HelloWorld {…}
20
Stateless Session Beansの作成
21
HelloWorldBean.java (1)
import javax.ejb.Stateless;@Statelesspublic class HelloWorldBean implements He
lloWorld {public void sayHello(String name) {...}
}
22
HelloWorldBean.java (2)@Stateless Stateless Session Bean 本体 Stateless Session Bean であることを示
すために、 @Stateless アノテーションを付加する
23
HelloWorldBean.java (3) 従来の EJB では
SessionBean インタフェースを実装 ejbCreate, ejbRemove メソッドなどを用意
EJB 3.0 では、 HelloWorld インタフェースを実装した POJO になっている
24
クライアントプログラム
25
HelloWorldClient.java
Context context = new InitialContext();HelloWorld helloWorld = (HelloWorld) contex
t.lookup("java:comp/env/ejb/HelloWorld");
helloWorld.sayHello(args[0]);
26
JNDI Java で ディレクトリサービス (LDAP な
ど ) にアクセスするための API抽象的な「名前」をキーにしてオブジェ
クトを取得できる。 オブジェクトの作成に必要な情報は設定
ファイルに記述する。 JDBC, EJB, JavaMail などでよく利用され
る。
27
JNDI からHelloWorld オブジェクトを取得
// Context ( ディレクトリ )// InitailContext ( ルート )Context context = new InitialContext();// 名前に対応する HelloWorld を取得HelloWorld helloWorld = (HelloWorld) context.l
ookup( "java:comp/env/ejb/HelloWorld");
28
etc/application-client.xml とJNDI からの検索
<ejb-ref-name>ejb/HelloWorld</ejb-ref-name>
context.lookup( "java:comp/env/ejb/HelloWorld");
Java のオブジェクトは、 java:comp/env/ という文字列が自動的に付加される
29
メソッドの実行
helloWorld.sayHello(args[0]);
30
サンプルアプリケーションの実行 (1) J2EE サーバの起動
%ORACLE_HOME%¥bin¥ejb30 -start Stateless Session Beans のコンパイ
ル・デプロイ cd %ORACLE_HOME%¥demo¥howtoejb30slsb ant
31
サンプルアプリケーションの実行 (2) クライアントプログラムの実行
ant run
32
課題
33
課題 ドル建ての金額を引数に与えたら、円に換算して出力するような dollarToYen メソッドを持つ Stateless Session Bean をつくる。
34
課題のクライアントプログラム例Context context = new InitialContext();Converter converter = (Converter)context.lookup
(”java:comp/env/ejb/Converter");
BigDecimal dollar = new BigDecimal(25);BigDecimal yen =
converter.dollarToYen(dollar);System.out.println(yen);
35
編集すべきファイル ソースファイル etc/application-client.xml etc/application.xml etc/jndi.properties build.xml
36
etc/application-client.xmlの変更
<ejb-ref-name>ejb/Converter
</ejb-ref-name> ……<remote>test.Converter</remote>
37
etc/application.xml の変更<display-name>
converter</display-name><module> <ejb>converter-ejb.jar</ejb></module>
38
etc/jndi.properties の変更
java.naming.provider.url=ormi://localhost:23791/converter
39
build.xml の変更
<property name="app.name" value="converter" />......<property name="cli.class" value="test.ConverterClient" />