ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans バージョン 3.0 プログラマーズ ガイド
11g リリース 1 (10.3.1)
B55529-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

2 エンタープライズ JavaBeans 3.0 について

以下の節では、EJB 3.0 の新機能とプログラミング モデルについて説明します。

ここでは、Java プログラミング、Java Platform, Enterprise Edition (Java EE) バージョン 5、および EJB 2.x の概念と機能に精通している読者を対象としています。

EJB 3.0 の新機能および EJB 2.X との相違点

エンタープライズ JavaBeans (EJB) は、コンポーネントベースのビジネス アプリケーションを開発およびデプロイするための Java Platform, Enterprise Edition (Java EE) バージョン 5 テクノロジです。EJB は強力で有用な技術ですが、バージョン 2.X 以前のプログラミング モデルは複雑で分かりにくく、非常に単純な EJB でも複数の Java ファイルとデプロイメント記述子を作成する必要がありました。このような複雑さが、EJB の普及を妨げていました。

そのため、EJB 仕様バージョン 3.0 では、EJB をより簡単にプログラムできるようにすることが目標の 1 つになっています。具体的には、必要となるプログラミング アーティファクトの数を減らし、Bean ファイルをより簡単かつ直感的にプログラミングできるようにする EJB 固有のメタデータ アノテーションのセットが導入されています。

EJB 3.0 仕様のもう 1 つの目標は、永続性フレームワークを標準化し、エンティティ Bean プログラミング モデルとオブジェクト リレーショナル (O/R) マッピング モデルの複雑さを軽減することです。


注意 :

このドキュメントでは、3.0 エンティティ Bean については説明しません。3.0 エンティティ Bean の詳細については、Oracle Kodo ドキュメントの「Java Persistence API」を参照してください。

以降では、EJB 2.X から EJB 3.0 になってプログラミング モデルと要件がどのように変更されたかについて概説し、EJB 3.0 の新機能について簡単に説明します。

バージョン 2.X と 3.0 での EJB プログラミング モデルと要件の相違点

EJB 2.X から 3.0 への変更点は以下のとおりです。

  • EJB デプロイメント記述子ファイル (ejb-jar.xml など) を作成する必要がなくなった。Bean ファイル自体の中で、メタデータ アノテーションを使用してメタデータをコンフィグレーションできます。ただし、必要であれば、引き続き XML デプロイメント記述子を使用することもできます。衝突が発生した場合は、デプロイメント記述子の値でアノテーションの値がオーバーライドされます。

  • Bean ファイルとして、POJO (Plain Old Java Object) を使用できる。javax.ejb.SessionBeanjavax.ejb.MessageDrivenBean を実装する必要はありません。

  • javax.ejb.SessionBeanjavax.ejb.MessageDrivenBean を実装する必要がなくなった結果、Bean ファイルに ejbCreateejbPassivate などのライフサイクル コールバック メソッドを実装する必要もなくなった。ただし、これらのコールバック メソッドを実装したい場合は、たとえば @javax.ejb.PostActivate のように、それらのメソッドに任意の名前を付けて適切なアノテーションとして追加できます。

  • Bean ファイルでビジネス インタフェースを使用する必要がある。ビジネス インタフェースは、Bean ファイルで明示的に実装するか、@javax.ejb.Remote または @javax.ejb.Local アノテーションを使用して指定できます。

  • ビジネス インタフェースは POJO (Plain Old Java Object) である。javax.ejb.EJBObjectjavax.ejb.EJBLocalObject を拡張しないようにする必要があります。

  • ビジネス インタフェースが java.rmi.Remote を拡張していない場合は、ビジネス インタフェース メソッドから java.rmi.RemoteException が送出されない可能性がある。

EJB 3.0 プログラミング モデルは非常にシンプルであるため、Oracle では EJB 3.0 Bean において EJBGen タグおよびコード生成ツールをサポートしないことになりました。このツールは、2.X Bean でのみ使用できます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「EJBGen リファレンス」を参照してください。

EJB 3.0 の新機能

  • Bean ファイルでメタデータ アノテーションを使用してメタデータをコンフィグレーションできるようになり、デプロイメント記述子は必要なくなった。

  • Bean ファイルで必須となるメタデータ アノテーションは、記述する EJB のタイプを指定するアノテーション (@javax.ejb.Stateless@javax.ejb.Stateful@javax.ejb.MessageDriven、または @javax.persistence.Entity) のみ。それ以外のアノテーションのデフォルト値は、EJB の典型的かつ標準的な用途を反映したものになっています。これにより、典型的な EJB をプログラミングする場合であれば Bean ファイルに記述するコードが減り、デフォルト値が適切でない場合にのみアノテーションを追加するだけで済みます。

  • Bean ファイルで、依存性注入がサポートされるようになった。「依存性注入」では、Bean コンテキスト内の別の EJB、リソース、環境エントリへの参照が、EJB コンテナによって Bean ファイル内の変数またはセッター メソッドに自動的に提供 (「注入」) されます。

  • Bean ファイルでインターセプタがサポートされるようになった。インターセプタは、EJB でアスペクト指向プログラミングを使用するための標準的な方法です。

  • 2 種類のインターセプタ メソッドをコンフィグレーションできる。ビジネス メソッドをインターセプトするメソッドと、ライフサイクル コールバックをインターセプトするメソッドです。

  • 特定の順序でチェーンとして実行する複数のインターセプタ メソッドをコンフィグレーションできる。

  • JAR ファイルに含まれるすべての EJB で実行するデフォルト インターセプタ メソッドをコンフィグレーションできる。

WebLogic Server の EJB 3.0 の付加価値機能

以下の機能は、エンタープライズ JavaBeans 3.0 仕様には含まれていませんが、EJB 3.0 プログラミング モデルをより簡略化するための付加価値機能です。

EJB 3.0 のサンプル

ステートレスおよびステートフル セッション Bean、インターセプタ クラス、エンティティの呼び出し方法などに関する単純なサンプルについては、「エンタープライズ JavaBeans 3.0 の単純なサンプル」を参照してください。この節では、これらのサンプルについて詳しく解説しています。これらのサンプルの目的は、EJB のビジネス コードをプログラミングする方法を説明することではなく、EJB 3.0 の新しいメタデータ アノテーションとプログラミング モデルの使用方法を示すことです。

実際のビジネス コードを含むより複雑なサンプルは、インストールした WebLogic Server の samples ディレクトリ内 (WL_HOME/samples/server/examples/src/examples/ejb/ejb30) に含まれています。WL_HOME は、WebLogic Server のインストール ディレクトリ (たとえば /Oracle/Middleware/wlserver_10.3) です。

3.0 エンティティのプログラミング

このドキュメントでは、3.0 のセッション EJB およびメッセージ駆動型 EJB をプログラミングする方法や、セッション EJB から 3.0 エンティティを呼び出す方法について説明します。3.0 エンティティの実際のプログラミングやコンフィグレーションの方法については説明しません。この詳細な手順については、Oracle Kodo ドキュメントの「Java Persistence API」を参照してください。