stateless session beans

39
1 Stateless Session Beans EJB 3.0 コココ コ3コ

Upload: tyanne

Post on 13-Jan-2016

39 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: Stateless Session Beans

1

Stateless Session Beans

EJB 3.0 コース第 3 回

Page 2: Stateless Session Beans

2

ここでの目標 “Oracle Application Server EJB 3.0 Previe

w” の概要を理解する。 Stateless Session Bean の概要を理解す

る。

Page 3: Stateless Session Beans

3

Oracle Application Server EJB 3.0 Preview

Page 4: Stateless Session Beans

4

EJB 3.0 の実装 現時点では、主に次の3つ

Resin 3.0 Jboss EJB 3.0 Preview Oracle Application Server EJB 3.0 Preview

Page 5: Stateless Session Beans

5

Oracle Application Server EJB 3.0 Preview 今回の実習で利用 “EJB 3.0 Early Draft 2” を実装している O/R Mapping Framework として、” Oracl

e TopLink” を採用

Page 6: Stateless Session Beans

6

Oracle TopLink Oracle 社の O/R Mapping Framework EJB 3.0 の仕様策定に多大な影響を与え

る 来年リリース予定の Java EE 5 では、 P

ersistence API の Reference Implementation (RI = 参照実装 ) として、 TopLink が使われる予定。

Page 7: Stateless Session Beans

7

インストール (1) Zip ファイルをダウンロードして、展開 展開先のディレクトリに、環境変数 ORA

CLE_HOME を設定しておく。 %ORACLE_HOME%¥bin に PATH を通して

おく。

Page 8: Stateless Session Beans

8

インストール (2) 環境変数 JAVA_HOME の設定

Java は J2SE 5.0 が必要 ANT のインストールと環境変数 ANT_HO

ME の設定

Page 9: Stateless Session Beans

9

Stateless Session Beans

Page 10: Stateless Session Beans

10

Session Beans (1) クライアントが必要に応じて呼び出す処

理をまとめたもの クライアントの特定のセッションに対応 セッション開始と同時に生成され、セッ

ション終了時に消滅

Page 11: Stateless Session Beans

11

Session Beans (2) Stateless Session Beans

インスタンスに固有のフィールドがないため内部状態を持たず、ユーティリティクラスのように振る舞う

Statefull Session Beans 内部状態を持っている

Page 12: Stateless Session Beans

12

サンプルアプリケーション (1) %ORACLE_HOME%¥demo¥howtoejb30sls

b について解説する HelloWorld サンプルアプリケーション Ant でコンパイル、 J2EE サーバへの配

備 ( デプロイ ) を実行

Page 13: Stateless Session Beans

13

サンプルアプリケーション (2) J2EE サーバ側 (EJB)

HelloWorld.java HelloWorldBean.java

クライアント側 HelloWorldClient.java

そのほか、いくつかの設定ファイル

Page 14: Stateless Session Beans

14

インタフェースの作成

Page 15: Stateless Session Beans

15

HelloWorld.java (1)import javax.ejb.Remote;@Remote

public interface HelloWorld { public void sayHello(String name);}

Page 16: Stateless Session Beans

16

HelloWorld.java (2) Stateless Session Beans が公開するメ

ソッドを定義しているインタフェース 従来の EJB では、 EJB オブジェクトイン

タフェースを継承する必要があった EJB 3.0 では、 POJI + Annotation のスタ

イルとなる

Page 17: Stateless Session Beans

17

@Remote このインタフェースは、 Remote (= 別のマシ

ン)で実行される可能性がある @Remote アノテーションを付加することで、

この EJB の機能を別のマシンから呼びだすことができるようになる

具体的には、 RMI/IIOP が用いられる

@Remote public interface HelloWorld {…}

Page 18: Stateless Session Beans

18

@Local 同一の Java Virtual Machine からしか動

かさない場合、 @Local アノテーションを付加する

@Local public interface HelloWorld {…}

Page 19: Stateless Session Beans

19

@Remoteと@Local 何もアノテーションを付けなかった場合、

@Local を付けるのと同じことになる

public interface HelloWorld {…}

Page 20: Stateless Session Beans

20

Stateless Session Beansの作成

Page 21: Stateless Session Beans

21

HelloWorldBean.java (1)

import javax.ejb.Stateless;@Statelesspublic class HelloWorldBean implements He

lloWorld {public void sayHello(String name) {...}

}

Page 22: Stateless Session Beans

22

HelloWorldBean.java (2)@Stateless Stateless Session Bean 本体 Stateless Session Bean であることを示

すために、 @Stateless アノテーションを付加する

Page 23: Stateless Session Beans

23

HelloWorldBean.java (3) 従来の EJB では

SessionBean インタフェースを実装 ejbCreate, ejbRemove メソッドなどを用意

EJB 3.0 では、 HelloWorld インタフェースを実装した POJO になっている

Page 24: Stateless Session Beans

24

クライアントプログラム

Page 25: Stateless Session Beans

25

HelloWorldClient.java

Context context = new InitialContext();HelloWorld helloWorld = (HelloWorld) contex

t.lookup("java:comp/env/ejb/HelloWorld");

helloWorld.sayHello(args[0]);

Page 26: Stateless Session Beans

26

JNDI Java で ディレクトリサービス (LDAP な

ど ) にアクセスするための API抽象的な「名前」をキーにしてオブジェ

クトを取得できる。 オブジェクトの作成に必要な情報は設定

ファイルに記述する。 JDBC, EJB, JavaMail などでよく利用され

る。

Page 27: Stateless Session Beans

27

JNDI からHelloWorld オブジェクトを取得

// Context ( ディレクトリ )// InitailContext ( ルート )Context context = new InitialContext();// 名前に対応する HelloWorld を取得HelloWorld helloWorld = (HelloWorld) context.l

ookup( "java:comp/env/ejb/HelloWorld");

Page 28: Stateless Session Beans

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/ という文字列が自動的に付加される

Page 29: Stateless Session Beans

29

メソッドの実行

helloWorld.sayHello(args[0]);

Page 30: Stateless Session Beans

30

サンプルアプリケーションの実行 (1) J2EE サーバの起動

%ORACLE_HOME%¥bin¥ejb30 -start Stateless Session Beans のコンパイ

ル・デプロイ cd %ORACLE_HOME%¥demo¥howtoejb30slsb ant

Page 31: Stateless Session Beans

31

サンプルアプリケーションの実行 (2) クライアントプログラムの実行

ant run

Page 32: Stateless Session Beans

32

課題

Page 33: Stateless Session Beans

33

課題 ドル建ての金額を引数に与えたら、円に換算して出力するような dollarToYen メソッドを持つ Stateless Session Bean をつくる。

Page 34: Stateless Session Beans

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);

Page 35: Stateless Session Beans

35

編集すべきファイル ソースファイル etc/application-client.xml etc/application.xml etc/jndi.properties build.xml

Page 36: Stateless Session Beans

36

etc/application-client.xmlの変更

<ejb-ref-name>ejb/Converter

</ejb-ref-name> ……<remote>test.Converter</remote>

Page 37: Stateless Session Beans

37

etc/application.xml の変更<display-name>

converter</display-name><module> <ejb>converter-ejb.jar</ejb></module>

Page 38: Stateless Session Beans

38

etc/jndi.properties の変更

java.naming.provider.url=ormi://localhost:23791/converter

Page 39: Stateless Session Beans

39

build.xml の変更

<property name="app.name" value="converter" />......<property name="cli.class" value="test.ConverterClient" />