Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

top 

J2EE コネクター・アーキテクチャー (JCA) は、多くのアプリケーション・コンテナーと今日の企業情報システム (EIS) との間の接続に関する問題解決に寄与する Java の技術です。JCA 1.5 仕様では、インバウンド通信モデルとして定義されていて、そのことによって EIS は EJB アプリケーションに対してすべての通信を始めることができます。このメカニズムではインバウンド・リソース・アダプターがエンタープライズ Java Bean を呼び出すことになります。

概略 overview

この文章では EJB アプリケーションをデプロイして、JCA アダプターからインバウンド・イベントを受け取ることができるようにする方法を説明します。最初に、スタンドアロンのリソース・アダプターをデプロイする Geronimo 固有のプラン記述だけではなく、インバウンド通信モデルに付随するリソース・アダプターの重要な部分を説明します。その後、EIS によって実行されるエンタープライズ・アプリケーションのインバウンド通信メカニズムを説明します。

リソース・アダプター adapter

このセクションで説明するコードは、デプロイされるリソース・アダプターの一部分です。多くの部分は Geronimo 固有ではありませんが、このセクションの最後では Geronimo コンテナーへリソース・アダプターをデプロイする方法を示します。

JCA 1.5 仕様では、インバウンド・アダプターはカスタマイズされたメッセージ・フォーマットのサポートが可能です。したがって、メッセージ駆動 Bean (MDB) がインバウンド・リソース・アダプターによって定義されたどんなインターフェースでも実装できます。以前の JCA 仕様では、Java メッセージ・サービス (JMS) のメッセージに javax.jms.MessageListener インターフェースを実装した MDB を必要とするようなインバウンド通信のメカニズムでした。JCA 1.5 では、どのようなインターフェースの定義でも MDB としてインバウンド・リクエストを扱えるようになりました。

インターフェースの定義

この例では、com.sample.connector.EventListener インターフェースが定義されています。このインターフェースはどのような MDB にも実装でき、この MDB はインバウンド・リソース・アダプターによって呼び出されるようになります。

...

ActivationSpec の実装

インバウンド・リソース・アダプターは javax.resource.spi.ActivationSpec インターフェースを実装しています。インターフェース自身にはメソッドはありませんが、このインターフェースを実装するクラスは、

  • JavaBean でなければなりません。getter と setter メソッドを bean のフィールドに用意してください。
  • シリアライズ可能でなければなりません。

API ドキュメントによれば、「ActivationSpec 実装は、メッセージのエンド・ポイントに関する情報をアクティベーションの構成情報として持つことになります」。今回の場合では、メッセージのエンド・ポイントは今回のエンタープライズ・アプリケーション内にある MDB です。今回の ActivationSpec を実装したクラスは com.sample.connector.EventActivationSpec です。今回の例での ActivationSpec は通信を開始するために必要なすべてのデータを持っているので、リモートの EIS システム用にアプリケーション・コンテナーに読み込むことができます(マシン名、通信ポート、ユーザー名、ユーザーのパスワード、イベント・パターン)。

...

一般的なデプロイメント記述

JCA デプロイメント記述 (ra.xml) には、アダプターを ActivationSpec を実装したインターフェースに結びつけるためのセクションがあります。これが必要なのは、アダプターによって呼び出される MDB に定義されたプロパティをアプリケーション・コンテナーに伝えるためです。

...

ActivationSpec が実装されると、リソース・アダプターの endpointActivation メソッドが更新されます。MDB が環境にデプロイされた際に、アプリケーション・コンテナーはこのメソッドをリソース・アダプター上で呼び出します。このことによって、インバウンド・アダプターは通信を開始することができるようになります。このメソッドのシグネチャーは次のとおりです。

...

endpointFactory によって MDB の新しいインスタンスを作成できるようになり、spec は必要なすべてのプロパティを含んでいる ActivationSpec の実装になります。このメソッドを実装することで、 EIS を利用するメカニズムによるメッセージのサポートが可能になります。通常、リソース・アダプターは javax.resource.spi.work.Work インターフェースの実装が定義されていて、新しいスレッドを作ることなくインバウンド・リクエストを処理するようになります。

同じように重要なことは endpointDeactivation メソッドの実装です。エンド・ポイントが活性化された時に作成されたすべてのリソースを、アダプターから開放することができるようになります。

Geronimo のデプロイメント記述

最後に、Geronimo 固有の仕様の詳細です。Geronimo デプロイメント記述はインバウンド・リソース・アダプターの仕様が定義されているセクションです。

...

上記デプロイメント・プランによってアダプターの RAR ファイルをデプロイすると、MyInboundEvents という名前のインバウンド・アダプターがひとつ作られます。 

EJB アプリケーション application

ここまで、Geronimo サーバーのインスタンスにリソース・アダプターを定義し、デプロイしてきました。では、リモートの EIS からメッセージを受信した時にインバウンド・リソース・アダプターによって呼び出されるメッセージ駆動 Bean を持っている EJB アプリケーションを作成し、デプロイします。

この例では、メッセージ駆動 Bean はリソース・アダプターで定義された EventListener インターフェースを実装しています。

...

この bean は多くのことをするわけではないのが実行されることは見せられます。ActivationConfigProperty アノテーションを利用してインバウンド・リソース・アダプターに必要とされるプロパティを定義します。これらの値は対応する ActivateSpec(今回では EventActivationSpec)向けに定義され、リソースアダプターの endpointActivation メソッドへ渡します。

Geronimo のデプロイメント記述

最後に、MDB と、リソース・アダプターを Geronimo コネクターにデプロイした時に定義したインバウンド・リソース・アダプターの MyInboundEvents とを結びつけます。これは EJB の Geronimo デプロイメント記述である openejb-jar.xml によって行います。

...

このファイルでは、EventBean と MyInboundEvents アダプターとを結びつけています。