...
toptop Anchor
エンタープライズ・メッセージングは信頼性のあるエンタープライズ・フレームワークに緩やかに結びつけられたコンポーネントとして重要性が増しています。これはエンタープライズ・アプリケーションや異種のエンタープライズ・リソースの急増に重要な要素であり、これらのアプリケーションを密接にまとまったシステムとして統合するニーズを増大させています。長年に渡って、メッセージングやメッセージング指向ミドルウェア (MOM) はこの統合に対して独占的な方法となっていました。標準化された Java メッセージング・サービス (JMS) の導入は、独占的な MOM ベースの製品の多くの不便さを解消します。加えて、J2EE アプリケーション・サーバーにエンタープライズ Java Beans 2.0 から導入されたメッセージ駆動 Beans (MDBs) は投資削減に役立ちます。現在のほとんどの J2EE アプリケーション・サーバーは、いっさいの価値を JMS に加えられた MOM として実行します。J2EE 1.4 認定のアプリケーション・サーバーとして、Apache Geronimo はオープン・ソースでよく成長したメッセージング・フレームワークの一つである ActiveMQ を統合して JMS のサポートをしています。この文章では Geronimo と ActiveMQ を使ってローカルとリモート両方の環境におけるエンタープライズ・アプリケーションのシナリオでの JMS の利用方法を示します。
...
Geronimo/ActiveMQ 環境での JMS の概略 Anchor overview overview
Geronimo サーバーは JMS サーバーとアプリケーション・コンポーネントを持っていて、JMS リソースにコネクション・ファクトリーやトピックス、キューなどのように接続できます。また、この JMS サーバーはメッセージ・ブローカーとしても知られています。Geronimo がデフォルトでサポートしているメッセージ・ブローカーは ActiveMQ です。これは十分に成熟した機能豊富な JMS プロダクトですので、通常は変更する必要はありません。この実装では組み込みの Derby データベースをメッセージ永続化機能のために利用しています。
ActiveMQ はさまざまなトランスポート(例えば TCP、SSL、UDP、マルチキャスト、内部 JVM、NIOなど)とクライアント相互処理(例えばプッシュ、プル、パブリッシュ/サブスクライブ)をサポートします。Geronimo での ActiveMQ は、JMS メッセージを処理する EJBs である MDBs をサポートします。ActiveMQ は Geronimo の J2EE 仕様の機能を JMS アプリケーションに保持させ、例えば JSP やサーブレットや EJB に JMS を利用させることができるようになります。Geronimo はこの JMS API を抽象レイヤーに実装しているので、いずれの JMS プロバイダーもサポートします。J2EE コネクター (JCA) 仕様をサポートすることでこの機能が含まれています。JCA 1.5 の詳細仕様により、アプリケーション・サーバーとドライバーの間に ActiveMQ(リソース・アダプター)による決まりごとがあります。Geronimo にデプロイしたアプリケーションは、このリソース・アダプター (RA) を通じてのみ ActiveMQ メッセージ・ブローカーへ接続します。
アプリケーションの概略 Anchor application application
Order processing アプリケーションは2つのメッセージ・キューを定義して注文や委託販売品を受信しています。注文リクエストはこの会社のウェブ・アプリケーション経由で生成され、送信されます。注文リクエストが注文キューで受信されると、MDB が処理開始となります。これらのリクエストをサーバー・リポジトリーに保存することによって、注文リクエストは次の段階へすすみます。これらの保存された注文リクエストは後でその会社の社員によって処理されます。
...
注文処理アプリケーションのコアは、アプリケーション・サーバーに EAR としてデプロイされます。以下に EAR の内容の概略を示します。
...
...
MDB の実装
ejb-jar.xml ファイル内に MDB の宣言をする代わりに、メッセージ駆動 Bean には @MessageDriven アノテーションを利用します。さらなる情報をアノテーションに与えることによって、送信先(今回はキューに入れる)を探して処理する方法がわかります。この MDB は 'OrderQueue' にメッセージを送信する処理をします。終了結果として画面にこのメッセージを表示します。
...
...
このアプリケーションには、OrderQueue でリッスンする MDB があります。openejb-jar.xml では Geronimo に MDB が jms-resources という JMS リソース・グループに所属していることを通知します。これは OrderRecvMDB と OrderQueue を CommonConnectionFactory 経由でリンクしています。
...
...
geronimo-application.xml と application.xml は EAR の主たるコンポーネントを定義しています。EJB コンポーネントと Web アーカイブ情報は通常これらのファイルにかかれます。この geronimo-application.xmlはまた、JMS キューとそれへ接続するための一般的なキューのコネクション・ファクトリーを定義するセクションも含みます。これは ear に組み込まれた geronimo-activemq-ra.rar のデプロイに利用されます。
...
...
クライアントの実装
OrderSenderServlet.java サーブレットはウェブのフォームを分析し、メッセージを生成し、CommonConnectoryFactory 経由で OrderQueue へメッセージを送信します。
...
...
Geronimo は @Resource の 'mappedName' 属性を無視することに注意してください。その代わりにアノテーションは 'name' を使ってください。
...
...
このアーカイブの web.xml では、キューのコネクション・ファクトリーとキューとの関連する構成を記述しています。これはリソースをローカル環境で参照するためには必須です。
...
...
このウェブ・アプリケーションはサーブレット 2.5 仕様をサポートしていることに注意してください。古いバージョン(2.4)での構成のいくつかは上記 web.xml とは若干違います。
アノテーションがキューやコネクション・ファクトリーの参照解決に利用されるので、 geronimo-web.xml は今回は不要です。
...
サンプル・アプリケーションの構成、ビルド、デプロイ Anchor configure configure
以下のリンクから Time Reporting アプリケーションをダウンロードしてください。
jms-mdb-sample
...
- Console Navigation パネルから Deploy New を選択してください。
- Archive 入力欄に jms-mdb-sample フォルダーの jms-mdb-sample-ear-2.0-SNAPSHOT.ear を読み込んでください。
- Install ボタンを押してアプリケーションをサーバーへデプロイしてください。
サンプル・アプリケーションのテスト Anchor testing testing
サンプル・ウェブ・アプリケーションをテストするには、ブラウザーを開いて http://localhost:8080/order を入力してください。注文管理の Welcome ページが表示されます。ユーザーは注文に必要な情報を入力し、サブミットします。
注文処理の後、コンソール上にメッセージが表示されているでしょう。
まとめ Anchor summary summary
この文章では ActiveMQ JMS サーバーを持つ Apache Geronimo の JMS 機能の利用をデモンストレーションしました。JMS 機能を広く利用する仮定的な例となります。
...