概要

Java Message Service (JMS) 仕様では、メッセージを作成および送受信する一般的な方法を Java 開発者に提供する企業内メッセージング ミドルウェア システムを構築するための API を定義します。JMS は移植可能で、メッセージベースのビジネス アプリケーションをサポートします。

JRun では、EJB エンジン内に JMS がシームレスに統合されています。

この章では、JRun で提供される JMS サービスの使用法について説明します。JMS に関する知識があることが前提になります。JMS の詳細については、
http://java.sun.com/products/jms/docs.html にある JMS 仕様を参照してください。

JRun JMS 実装では、 Sun JMS バージョン 1.02 仕様の ポイントツーポイント (キューベース) とパブリッシュ/サブスクライブ (トピックベース) の同期、および非同期メッセージングがサポートされています。メッセージにはパーシスタンスを指定できるので、サーバーのシャットダウン時にメッセージが失われません。

トピックベースのメッセージングでは、永続性のあるサブスクライブが使用可能です。これにより、サブスクライバがアクティブではないときに生成されるメッセージを含め、生成されるすべてのメッセージがクライアントにより確実に受信されるようになります。

この章では、プロデューサという用語はメッセージを送信するクライアントを表します。また、コンシューマという用語はメッセージを受信するクライアントを表します。ただし、コンシューマ、プロデューサは両方ともクライアントと呼ばれます。

メッセージを生成、または処理するために、クライアントは、まずサーバーへの接続を確立し、Connection を呼び出して、Session を作成します。クライアントはサーバーと対話し、以前に確立された Session オブジェクトを使用してメッセージを生成または処理します。ポイントツーポイント メッセージングとパブリッシュ/サブスクライブでは、Connection オブジェクトと Session オブジェクトのカスタマイズされた子オブジェクトが使用されます。これらのオブジェクトの詳細については、"メッセージ タイプ"を参照してください。


メモ

ポイントツーポイント メッセージングでは、プロデューサは送信者、コンシューマは 受信者と呼ばれます。パブリッシュ/サブスクライブでは、プロデューサはパブリッ シャ、コンシューマはサブスクライバと呼ばれます。


Bean をコンシューマ (リスナ) として設定するには、javax.jms.MessageListener インターフェイスを Bean のリモート インターフェイスにある implements 節に入れ、Bean 実装に javax.jms.MessageListener インターフェイスと onMessage メソッドを実装します。

メッセージングのサポートは、ローカル エンティティ Bean をサポートする EJB エンジンの拡張可能なエンティティ アーキテクチャに基づいて、完全にトランザクション処理されています。これにより、メッセージの保持とロギングで BMP と CMP を使用できます。

JRun では、MessageQueueBean エンティティ Bean を使用して、キュー (ポイントツーポイント) が実装され、TopicDispatcherBean エンティティ Bean を使用してトピック (パブリッシュ/サブスクライブ) が実装されます。このアーキテクチャでは、既定の Bean 実装を書き換えることにより、メッセージング機能をカスタマイズできます。

JRun メッセージング アーキテクチャ

JRun では、次のオブジェクトを通じて JMS が実装されます。

JRun により、クライアント メッセージは Connection オブジェクトから、サーバーの Connector を通じて指定された MessageQueue に転送されます。メッセージが MessageQueue に追加されると、MultiCaster により、message type と設定されたプロパティがあればそれに従って、メッセージがコンシューマに配布されます。通知が要求されている場合は、それがプロデューサに返されます。

リモート接続

次の図に示すように、JRun では、リモート JMS 接続のために標準 UDP マルチキャスティングが使用されます。

ローカル接続

次の図に示すように、ローカル接続の場合は、Multicaster により、メッセージが Connector を通じて配信されます。

JMS サポートの有効化

JRun サーバーで JMS サポートを有効にするには、local.properties ファイルで次のプロパティを指定します。

ejb.services=ejb,jms
ejb.ejipt.enableMessaging=true

また、"キューの定義"および "トピックの定義"で説明しているように local.properties ファイルでも、キューとトピックをあらかじめ定義する必要があります。

EJB エンジンをスタンドアロン モードで実行している場合は、deploy.properties ファイルにこれらのプロパティを指定します。