EJB タイプ

EJB には、次の 3 つのタイプがあります。

これらの機能については次のページで説明します。

セッション bean

セッション bean を使用して、ビジネスロジックを管理します。セッション bean には、次の 2 つのタイプがあります。

ステートレスセッション bean

ステートレスセッション bean では、会話ステートが維持されません。ただし、ステートレスセッション bean は、セッション/エンティティのファサードパターンで利用される場合は特に有効です。この場合、セッション bean のメソッドによって、1 つ以上のエンティティ bean にある 1 つ以上のメソッドを呼び出して、1 つの単位の作業が実行されます。

詳細については、弟 14 章、「EJB プログラミングテクニック」を参照してください。

ステートフルセッション bean

ステートフルセッション bean では、会話ステートが維持されます。クラスタ環境で JRun を使用すると、JRun は、クラスタ全体でステートフルセッション bean ステートを維持することによってフェイルオーバーをサポートします。

詳細については、弟 14 章、「EJB プログラミングテクニック」を参照してください。

エンティティ bean

エンティティ bean は、サーバがシャットダウンするまで存続するオブジェクトを表します。エンティティ bean のインスタンスを表現するデータは通常、関係データベースのテーブルの行に保管されています。このデータベースには、JDBC データソースからアクセスします。テーブルは、複数のデータベースに及ぶ場合もあります。

パーシスタンスには、次の 2 つのタイプがあります。

BMP

BMP では、コールバックメソッドの適切なデータベースの更新をコーディングすることによって、開発者がパーシスタンスを管理します。たとえば、ejbUpdate メソッドにはデータベースを更新するコードがあり、ejbFindByPrimaryKey メソッドにはプライマリキーを使用してデータベース行を見つけるコードがあります。

詳細については、samples JRun サーバの compass-ear ディレクトリにある Order EJB を参照してください。

CMP

CMP では、ライフサイクルのある時点でデータベースと bean を自動的に同期することによって、コンテナがパーシスタンスを管理します。CMP を使用すると、bean 実装コーディングがより簡単になるので、ビジネスロジックに焦点を合わせることができます。

EJB 2.0 仕様では、アプリケーションサーバで EJB 1.1 CMP および EJB 2.0 CMP がサポートされている必要があります。

EJB 2.0 CMP のサポート

EJB 2.0 仕様は CMP に対する主要な変更を特徴としており、次の機能が含まれています。

CMP の拡張が EJB 2.0 の主な特徴になっています。このマニュアルのリソースおよび例を使用するだけでなく、EJB 2.0 に関する業界誌も参照してください。このマニュアルの序章にはこれらの本のリストが記載されています。

EJB 2.0 サポートの詳細については、第 14 章を参照してください。

EJB 1.1 CMP のサポート

JRun 4 の EJB 1.1 CMP のサポートは、JRun の以前のバージョンの CMP とは異なります。以前は、ejb-jar.xml ファイルの環境エントリでパーシスタンス情報を指定していました。JRun 4 では、jrun-ejb-jar.xml ファイルの要素でパーシスタンス情報を指定します。これらの要素で、store、load、findByPrimaryKey などの適切なパーシスタンスアクションのパーシスタンス管理方法を EJB コンテナに通知します。

EJB 1.1 サポートの詳細については、第 14 章を参照してください。

メモ:  JRun では、JRun 3.1 スタイルの CMP bean のオートデプロイもサポートしています。

メッセージ駆動型 bean

MDB (message-driven bean:メッセージ駆動型 bean) は JMS メッセージリスナとしての役割を果たします。MDB にはリモート、リモートホーム、ローカル、またはローカルホームインターフェイスがない点で、セッション bean およびエンティティ bean とは異なります。MDB は、bean 実装があるという点で他の bean タイプと同じであり、ejb-jar.xml ファイルで定義されます。トランザクション、セキュリティ、ライフサイクル管理などの EJB 機能を利用できます。単純な JMS メッセージコンシューマに対する MDB の主な利点は、コンテナで複数の MDB インスタンスをインスタンス化して複数のメッセージを同時に処理できることです。

MDB の詳細については、第 14 章を参照してください。