ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansバージョン3.0のプログラミング
11g リリース1 (10.3.6)
B61625-06
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

2 Enterprise JavaBeans 3.0の理解

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

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

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

Enterprise 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 2.Xと3.0との間のEJBプログラミングのモデルおよび要件に関する変更点をまとめています。

  • 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アノテーションを使用して指定できます。

  • ビジネス・インタフェースはPlain Old Java Interface (POJI)です; それはjavax.ejb.EJBObjectjavax.ejb.EJBLocalObjectを拡張するべきではありません。

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

EJB 3.0プログラミング・モデルは非常にシンプルであるため、OracleではEJB 3.0 BeanにおいてEJBGenタグおよびコード生成ツールをサポートしないことになりました。このツールは、2.X Beanでのみ使用できます。詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の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の付加価値機能

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

EJB 3.0のサンプル

ステートレスおよびステートフル・セッションBean、インターセプタ・クラス、エンティティの呼出し方法などに関する単純なサンプルについては、第3章「Enterprise 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」を参照してください。