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 では、次のオブジェクトを通じて JMS が実装されます。
Connector
オブジェクトにより、JMS Connection
オブジェクトと JRun MessageQueue
オブジェクトの通信が管理されます。
MessageQueue
オブジェクトには、メッセージが保持されます。JRun では、エンティティ Bean を通じてこのオブジェクトが実装されます。MultiCaster
オブジェクトにより、コンシューマにメッセージが配信されます。JRun では、エンティティ Bean を通じてこのオブジェクトが実装されます。
JRun により、クライアント メッセージは Connection
オブジェクトから、サーバーの Connector
を通じて指定された MessageQueue
に転送されます。メッセージが MessageQueue
に追加されると、MultiCaster
により、message type と設定されたプロパティがあればそれに従って、メッセージがコンシューマに配布されます。通知が要求されている場合は、それがプロデューサに返されます。
次の図に示すように、JRun では、リモート JMS 接続のために標準 UDP マルチキャスティングが使用されます。
次の図に示すように、ローカル接続の場合は、Multicaster
により、メッセージが Connector
を通じて配信されます。
JRun サーバーで JMS サポートを有効にするには、local.properties
ファイルで次のプロパティを指定します。
ejb.services=ejb,jms
ejb.ejipt.enableMessaging=true
また、"キューの定義"および "トピックの定義"で説明しているように local.properties
ファイルでも、キューとトピックをあらかじめ定義する必要があります。
EJB エンジンをスタンドアロン モードで実行している場合は、deploy.properties
ファイルにこれらのプロパティを指定します。