Workshop でのエンタープライズ JavaBean

Workshop では、WebLogic EJB プロジェクトによってエンタープライズ JavaBean の開発が非常に容易になります。このトピックでは、アプリケーションの EJB と WebLogic EJB プロジェクトの概要について説明します。このトピックの内容は以下のとおりです。

注意 : Workshop では、WebLogic Server で利用できる EJB 関連技術のツールがサポートされています。Workshop 関連以外のエンタープライズ JavaBean の開発については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』を参照してください。

エンタープライズ JavaBean とは

EJB は、アプリケーションのビジネス ロジックをカプセル化するサーバサイド コンポーネントです。ビジネス ロジックは、アプリケーションにインフラストラクチャを提供するコードとは対照的に、アプリケーションの目的を実行するコードです。たとえば、ある在庫管理アプリケーションで、EJB が checkInventoryLevelorderProduct というメソッドでビジネス メソッドを実装しているとします。リモート クライアントはこれらのメソッドを呼び出すことで、アプリケーションによって提供される在庫管理サービスにアクセスできます。

EJB は、EJB にシステム サービスを提供する EJB コンテナ内で実行されます。これらのサービスには、トランザクション管理、永続性、プーリング、クラスタ化などのインフラストラクチャがあります。J2EE および EJB アーキテクチャは、データベース接続のための JDBC API、メッセージングのための JMS、ネーミングとディレクトリ機能のための JNDI など、いくつかの基礎となる技術標準に基づいて構築されています。これらの技術標準の詳細については、お好きな J2EE ドキュメントおよび http://java.sun.com を参照してください。

Java EE 5 では、セッション Bean、エンティティ Bean、およびメッセージ駆動型 Bean の 3 種類の EJB があります。以下の節では、それぞれの種類について簡単に説明します。

セッション EJB

セッション EJB は、アプリケーション サーバ上のクライアントに対してビジネス タスクを実行するのに使用されます。セッション EJB は、クライアントに対して単一のメソッドのみを実行する (ステートレス セッション Bean の場合) ことも、その同じクライアントに対して複数のメソッドを実行する (ステートフル セッション Bean の場合) こともあります。セッション Bean が、クライアント間で共有されることはありません。セッション EJB に永続性はありません。したがって、クライアントが終了すると、クライアントが使用していたセッション EJB は終了したように見え、クライアントとの関連付けが解除されます。

セッション Bean の開発の詳細については、「セッション Bean の開発」を参照してください。

注意 : Workshop 関連以外のセッション エンタープライズ JavaBean の開発については、「セッション EJB」を参照してください。

エンティティ EJB

エンティティ EJB は、永続ストレージ メカニズム内のビジネス オブジェクトを表します。ビジネス オブジェクトの例としては、顧客、注文、製品などがあります。永続ストレージ メカニズムはリレーショナル データベースです。一般に、各エンティティ Bean はリレーショナル データベース内の基底のテーブルを持ち、Bean の各インスタンスはそのテーブル内の行に対応しています。セッション Bean とは異なり、エンティティ Bean は永続的です。共有アクセスを許可し、主キーを持ち、他のエンティティ Bean との関係に参加できます。

Workshop によるこのコンポーネント タイプのサポートについては「エンティティ Bean の開発」を参照してください。

注意 : Workshop 関連以外のセッション エンタープライズ JavaBean の開発については、「エンティティ EJB」を参照してください。

メッセージ駆動型 EJB

メッセージ駆動型 EJB は、Java Message Service (JMS) メッセージをリスンする機能を持つエンタープライズ Bean です。メッセージは、JMS に準拠したコンポーネントまたはアプリケーションによって送信されます。メッセージ駆動型 EJB は、J2EE アプリケーションがメッセージ ベースのレガシー アプリケーションとの関係に参加するためのメカニズムです。

詳細については、「メッセージ駆動型 Bean の開発」を参照してください。

注意 : Workshop 関連以外のメッセージエンタープライズ JavaBean の開発については、「メッセージ駆動型 EJB」を参照してください。

EJB インタフェース

EJB 2.0 では、ローカル ホーム インタフェース、ローカル ビジネス インタフェース (または単にローカル インタフェース)、リモート ホーム インタフェース、およびリモート ビジネス インタフェース (または単にリモート インタフェース) と呼ばれる、セッション Bean およびエンティティ Bean 用の 4 種類のインタフェースをエクスポーズしています。アノテーションを使用して EJB を開発する場合、これらのインタフェースは IDE によって生成されます。アノテーションの属性値は、生成されるインタフェースの名前を指定します。

クライアント アプリケーションは、リモート ホーム インタフェースを使用して、通信する EJB のインスタンスを取得できます。リモート ホーム インタフェースのメソッドは、EJB インスタンスを作成または検索するものに限定されます。クライアントは、EJB インスタンスを取得すると、EJB のリモート ビジネス インタフェースのメソッドを呼び出して処理を実行できます。ビジネス インタフェースは、EJB にカプセル化されたビジネス ロジックに直接アクセスします。

同一の Workshop アプリケーション内で定義されている EJB 間の対話には、同一の Workshop アプリケーション内における EJB と Web サービスまたはページ フロー間での対話と同様に、代わりにローカル インタフェースを使用することもできます。この方がリモート インタフェースよりもパフォーマンス上では利点があります。つまり、ローカルのホームおよびビジネス インタフェースは、同一の Workshop アプリケーション内で他の Bean、EJB コントロール、Web サービス、およびページ フローによってアクセス可能なメソッドを定義し、リモートのホームおよびビジネス インタフェースは、他のアプリケーションによってアクセス可能なメソッドを定義します。

メッセージ駆動型 Bean には、これらのインタフェースがありません。これらの Bean のメソッドは、他の Bean またはクライアント アプリケーションによって直接呼び出されることはないためです。その代わり、これらの Bean は Java Message Service (JMS) を通じて配信されるクライアント アプリケーションまたは他の EJB からのメッセージを処理します。メッセージが配信されると、EJB コンテナはメッセージ駆動型 Bean の onMessage メソッドを呼び出して、そのメッセージを処理します。Java Message Service の詳細については、お好きな J2EE ドキュメントを参照してください。Workshop には Java Message Service を処理する JMS コントロールが用意されています。

デプロイメント記述子

実行時、EJB コンテナが EJB をどのように管理すべきかという情報は、デプロイメント記述子から読み取られます。デプロイメント記述子には、たとえば EJB JAR ファイルにパッケージ化されるさまざまな Bean、トランザクション管理に関連する設定、および検索メソッド用の EJB QL などが記載されています。

注意 : デプロイメント記述子は決してソース コントロール システムにチェックインしないでください。記述子は、開発中に Workshop によって繰り返し更新されます。

EJB ソース コードのアノテーションの属性値は、記述子で使用される値を指定します。これらは、IDE によって自動的に生成されます。

注意 :デプロイメント記述子については、「EJB デプロイメント記述子」を参照してください。

EJB JAR

EJB JAR には、1 つまたは複数の EJB が格納されています。これには、EJB のインタフェース定義、EJB によって使用されているすべての関連 Java クラス、およびこれらの EJB を説明するデプロイメント記述子が含まれています。

WebLogic EJB プロジェクトとは

WebLogic EJB プロジェクトは、Workshop アプリケーションのセッション、エンティティ、およびメッセージ駆動型 Bean の開発環境です。WebLogic EJB プロジェクトには、1 つまたは複数の EJB が含まれています。Workshop アプリケーションは、1 つまたは複数の WebLogic EJB プロジェクトに加え、Web サービス プロジェクト および Web アプリケーション プロジェクトなど他のタイプのプロジェクトを備えることができます。

WebLogic EJB プロジェクトを作成して WebLogic EAR プロジェクトに関連付けると、その EAR に現在含まれるすべての WebLogic Web プロジェクトから新しい EJB プロジェクトへの依存関係が自動的に作成されます (自動作成を無効にすることもできます)。WebLogic エンティティ Bean、WebLogic セッション Bean、WebLogic メッセージ駆動型 Bean の 3 種類のソース コード テンプレートを使用することで、EJB ソース コードを WebLogic EJB プロジェクトに追加できます。

他のソース アーティファクトと同様に、[プロパティ] ビューを使用してアノテーション属性値を編集することで、EJB インタフェースの生成方法やデプロイメント記述子の設定などを指定できます。

WebLogic EJB プロジェクト内で EJB を開発することの主な利点は、EJB クラスの定義、そのインタフェース、およびデプロイメント記述子固有の設定を 1 つのファイルに格納できることです。この情報を複数の Java ファイルに格納することによるオーバーヘッドを管理するのではなく、1 つのファイルで EJB を表すことができます。これは、EJBGen アノテーションを使用することによって実現されます。

注意 : Workshop でエンタープライズ JavaBean を開発する場合、指定の EJB プロジェクトではなく WebLogic EJB プロジェクトのプロジェクト タイプを使用してください。WebLogic EJB プロジェクトには、IDE と共に提供されている WebLogic EJB 拡張が含まれます。

WebLogic EJB プロジェクトと EJBGen アノテーション

Workshop で EJB を開発する場合、EJB ソース ファイルで EJBGen アノテーションを使用します。これらのアノテーションは、リモート インタフェースとホーム インタフェースの生成時にエクスポーズするメソッドを指定する目的と、デプロイメント記述子の設定を指定する目的に使用されます。IDE では、生成されたデプロイメント記述子は src/META-INF の下に配置されます。また、生成されたインタフェースは .apt_src の下に配置されます。

これらのアノテーションは、直接または [プロパティ] ビューを使用して編集できます。[プロパティ] ビューを使用すると、一部のアノテーション属性で必要な定数値を確認できるので作業が簡単になります。

EJBGen アノテーションの詳細については、「EJBGen リファレンス」を参照してください。

EJB をビルドおよびデプロイする

EJB プロジェクトをビルドすると、EJB のソース コードがコンパイルされてエラーがないかチェックされます。EJB プロジェクトのビルド出力は EJB JAR であり、これには Bean クラスのさまざまな JAVA および CLASS ファイル、そのインタフェース、およびすべての依存値または主キー クラス、そしてこれらの Bean のデプロイメント記述子が格納されます。ビルドが完了すると、Bean はサーバ上に (再) デプロイされます。また、EJB ソース ファイルを追加、変更、または削除すると、Workshop では、EJBGen ツールが実行されてインタフェースとデプロイメント記述子が再生成されます。

WebLogic EJB プロジェクトが WebLogic Server と関連付けられる場合、EJB モジュールが (スタンドアロンの EJB モジュールまたは EAR の子として) サーバにデプロイされます。プロジェクトが最後のパブリッシュから変更された場合、ejbc が実行されて EJB の WebLogic EJB コンテナ クラスを生成およびコンパイルします。

EJB コントロールとは

EJB コントロールを使うと、別の方法で EJB を容易に見つけて参照できます。EJB コントロールを作成すると、クライアント アプリケーションは EJB コントロールを定義し、制御する EJB と同じメソッド名を持つメソッドを使用して、EJB 自体を探して参照する必要なしに目的のビジネス ロジックを実行できるようになります。つまり、EJB コントロールが EJB を使用するために必要な準備作業を引き受けるため、ユーザはビジネス ロジックに焦点を絞ることができます。

関連トピック

アプリケーションとプロジェクト

チュートリアル : エンタープライズ JavaBean の構築


さらにヘルプが必要ですか。質問は Workshop ニュース グループまでお寄せください。