Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)


2.2.1 Enterprise Beanの種類

アプリケーションサーバで提供しているEJBコンテナでは,次の表に示すEnterprise Beanを実行できます。

表2‒3 EJBコンテナで実行できるEnterprise Beanの分類

大分類

小分類

Session Bean

Stateless Session Bean

Stateful Session Bean

Singleton Session Bean

Entity Bean

BMP(Bean Managed Persistence)

CMP(Container Managed Persistence)

Message-driven Bean

なし

ここでは,それぞれのEnterprise Beanの特徴について説明します。

〈この項の構成〉

(1) Session Bean

Session Beanは,クライアントからのセッション単位に生成され,クライアントが終了すると消滅するEnterprise Beanです。Session Beanのライフサイクルが,ユーザがシステムの利用を開始してから終了するまでの範囲内を超えることはありません。Session BeanはStateless Session Bean,Stateful Session Bean,Singleton Session Beanに分類されます。

(a) Stateless Session Bean

セッションの状態を管理しないモデルです。クライアントからの1セッションはBeanのビジネスメソッドの1回の呼び出しで完結させる必要があります。

(b) Stateful Session Bean

セッションの状態を管理するモデルです。EJBコンテナが状態管理をします。クライアントからの1セッションがEJBの複数のビジネスメソッドを呼び出す場合でも,ビジネスメソッドの呼び出し間で状態が保存されます。

(c) Singleton Session Bean

複数のクライアントでセッションの状態を共有するモデルです。アプリケーションに対して,すべてのセッションで共有されるインスタンスが一つ作成されます。アプリケーションに合わせてBeanのライフサイクルを決定する必要があります。

アプリケーションサーバで利用できるSingleton Session Beanの詳細は,「2.19 Singleton Session Beanの利用」を参照してください。

(2) Entity Bean

Entity Beanは,エンティティを表現し,データベースに保存(永続化)されることを前提としています。そのため,クライアントが終了してもEntity Beanの状態はデータベースに存在し続けます。Session Beanと比較してライフサイクルが長いEnterprise Beanです。EJB仕様では,次の二つの管理モデルを規定しています。

(a) BMP(Bean Managed Persistence)

Enterprise Beanのビジネスメソッド内でデータの永続化を管理するモデルです。データベースへの接続,SQLの組み立てや実行などの処理は,Enterprise Beanの開発者が実装しなければなりません。

(b) CMP(Container Managed Persistence)

EJBコンテナがデータの永続化を管理するモデルです。データベースへの接続とデータの保存はEJBコンテナによって実行されるので,Enterprise Beanのビジネスメソッドで実行する必要はありません。Enterprise Bean内のデータと格納先データベースのテーブルおよびカラムの対応をEJBコンテナが提供する方法で定義します。一方,接続先データベースのホスト名やポート番号などの接続情報をリソースアダプタまたはデータソースに定義します。EJBコンテナは,これらの定義情報を参照してSQL文を組み立て,接続先データベースのテーブルにデータの参照および格納をします。

なお,EJB 2.0で追加されたCMP 2.0では,EJB QLによって,使用するデータベースに依存することなく,データベースの検索処理をSQLのような構文でDDに記述できます。また,Entity Bean同士に関連を持たせるCMR(Container-managed relationship)によって,Entity Bean間の関連をDDで設定し,EJBコンテナで管理できます。

アプリケーションサーバで提供するEJBコンテナのCMP機能でのEntity BeanのJavaデータ型とデータベースのSQLデータ型の対応については,「2.4.2 CMPフィールドとデータベースのマッピング」を参照してください。

(3) Message-driven Bean

Message-driven Beanは,JMSと連携するメッセージ駆動タイプのBeanです。EJBコンテナはJMSのDestinationからのJMSメッセージ受信を契機にBeanを起動します。Session BeanまたはEntity Beanと異なり,ホームインタフェース,コンポーネントインタフェースを持たないため,クライアントから直接呼び出されません。

Message-driven Beanは,EJB 2.0の場合とEJB 2.1以降の場合で実装するインタフェースが異なります。

EJB 2.0とEJB 2.1以降では,それぞれ対応するConnectorのバージョンが異なります。EJBとConnectorのバージョンの対応を次の表に示します。

表2‒4 EJBとConnectorのバージョンの対応

EJBのバージョン

Connectorのバージョン

Connector 1.0

Connector 1.5

EJB 2.0

×

EJB 2.1以降

(凡例)

○:Reliable MessagingまたはTP1/Message Queue - Accessから送信されたメッセージを受信できる。

◎:任意の形式のリスナインタフェースを使用して送信されたメッセージを受信できる。

×:該当するリソースアダプタから送信されたメッセージを受信できない。

また,EJB 2.0とEJB 2.1以降では,次の表に示す機能差があります。

表2‒5 EJB 2.0とEJB 2.1以降の機能差

機能

EJB 2.0

EJB 2.1以降

Connector 1.0の機能を使用する場合

Connector 1.5の機能を使用する場合

接続できるリソースアダプタ

Connector1.0仕様に準拠したリソースアダプタ。

Connector1.0仕様に準拠したリソースアダプタ。

Connector 1.5仕様に準拠し,Inboundが定義されているリソースアダプタ。

使用できるEIS

  • Reliable Messaging

  • TP1/Message Queue - Access

  • Reliable Messaging※2

  • TP1/Message Queue - Access※2

Connector 1.5をサポートする任意のEIS(JMSを含みます)。※1

キューの定義方法

キュー定義ファイルに定義します。

キュー定義ファイルに定義します。

リソースアダプタのDD(ra.xml)内の管理対象オブジェクトに定義します。

JMSのバージョン

JMS1.0.2b

JMS1.0.2b

JMS1.1

メッセージリスナでのコネクションの管理方法

アプリケーションの属性(pooled-instance)に指定します。Message-driven Beanのmethod-readyプールと同じになります。

アプリケーションの属性(pooled-instance)に指定します。Message-driven Beanのmethod-readyプールと同じになります。

使用するリソースアダプタによって異なります。

注※1

Reliable MessagingまたはTP1/Message Queue - AccessはConnector 1.5仕様に対応していないため,Connector 1.5の機能は使用できません。

注※2

EJB2.1 のDeployment Descriptorでは<message-selector>タグの指定ができません。メッセージセレクタを使用する場合には,CJMSプロバイダからメッセージを受信するようにしてください。