1 / 39

Stateless Session Beans

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.

tyanne
Download Presentation

Stateless Session Beans

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stateless Session Beans EJB 3.0 コース 第3回

  2. ここでの目標 • “Oracle Application Server EJB 3.0 Preview”の概要を理解する。 • 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 として、”Oracle TopLink”を採用

  6. Oracle TopLink • Oracle 社のO/R Mapping Framework • EJB 3.0 の仕様策定に多大な影響を与える • 来年リリース予定の Java EE 5 では、Persistence API の Reference Implementation (RI = 参照実装) として、TopLink が使われる予定。

  7. インストール (1) • Zip ファイルをダウンロードして、展開 • 展開先のディレクトリに、環境変数 ORACLE_HOME を設定しておく。 • %ORACLE_HOME%¥bin にPATHを通しておく。

  8. インストール (2) • 環境変数 JAVA_HOME の設定 • Java は J2SE 5.0 が必要 • ANTのインストールと環境変数 ANT_HOME の設定

  9. Stateless Session Beans

  10. Session Beans (1) • クライアントが必要に応じて呼び出す処理をまとめたもの • クライアントの特定のセッションに対応 • セッション開始と同時に生成され、セッション終了時に消滅

  11. Session Beans (2) • Stateless Session Beans • インスタンスに固有のフィールドがないため内部状態を持たず、ユーティリティクラスのように振る舞う • Statefull Session Beans • 内部状態を持っている

  12. サンプルアプリケーション (1) • %ORACLE_HOME%¥demo¥howtoejb30slsb について解説する • 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; @Stateless public class HelloWorldBean implements HelloWorld { 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) context.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.lookup( "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" />

More Related