EJB のタイプ

EJB 仕様ではエンタープライズ bean の 3 つのタイプ、セッション bean、エンティティ bean、および メッセージ駆動型 bean (Message Driven Beans) を定義します。次のセクションでは、これらのタイプについて説明します。詳細については、『JRun プログラマーガイド』を参照してください。

セッション bean

セッション bean は、アプリケーションにおけるビジネスロジックの管理に使用します。セッション bean を使用して、EJB 間の対話の調整や、製品の価格の生成、ATM との対話、旅行の予約などのタスクを実行するために複雑な操作を行うことがよくあります。

セッション bean には、次の 2 つのタイプがあります。

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

ステートレスセッション bean では会話型ステートを維持しません。シングルリクエストビジネスプロセスは、ステートを維持する必要がないプロセスです。ステートレスセッション bean は、これらのタイプのシングルリクエストビジネスプロセスに対応できます。

ステートレスセッション bean は、特にセッションエンティティファサードパターンで有効です。ファサードは、低レベルサブシステムをマスクする高レベルインターフェイスです。ステートレスセッション bean では、ビジネスプロセスに高レベルインターフェイスファサードを提供できます。ビジネスプロセスでは、セッション bean メソッドが 1 つ以上のエンティティ bean で 1 つ以上のメソッドを呼び出して作業単位を実行します。

詳細については、『JRun プログラマーガイド』を参照してください。

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

シングルビジネスリクエストでは、商品の価格の計算やクレジットカード口座の検証といった複数のビジネスプロセスを実行できます。さらに他のビジネスプロセスも取り出され、複数のリクエストおよびトランザクションの処理が継続されます。たとえば、電子商取引の Web サイトでは、オンラインショッピングカートに商品が追加されることによって、メソッドリクエストが複数になります。ビジネスプロセスでは、リクエスト間のユーザーのステートを追跡する必要があります。ステートフルセッション bean では、クライアントに代わって会話型ステートを維持します。メソッドを呼び出すときにステートフルセッション bean が変更されると、クライアントでは次の呼び出し時にその同じステートを使用することができます。

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

詳細については、『JRun プログラマーガイド』を参照してください。

エンティティ bean

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

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

BMP

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

詳細については、samples サーバの compass-ear ディレクトリにある CreditCard および Reservation 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 サポートの詳細については、『JRun プログラマーガイド』を参照してください。

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 コンテナに通知します。

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

EJB 1.1 サポートの詳細については、『JRun プログラマーガイド』を参照してください。

メッセージ駆動型 bean

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

MDB は、セッション bean のように、他のセッションおよびエンティティ bean に関連するタスクを調整する責任があります。メッセージ駆動型 bean とセッション bean の主な違いはそのアクセス方法です。セッション bean では、ユーザーが起動できるメソッドを定義するリモートインターフェイスが提供されますが、メッセージ駆動型 bean では提供されません。MDB は、特定の非同期メッセージを引用またはリスンします。MDB は、メッセージを処理し、それらのメッセージに応じて他の bean が行うアクションを管理することによってレスポンスします。

単純な JMS メッセージコンシューマに対する MDB の主な利点は、EJB コンテナで複数の MDB インスタンスをインスタンス化して複数のメッセージを同時に処理できることです。

MDB の詳細については、『JRun プログラマーガイド』を参照してください。