WebLogic JMS プログラマーズ ガイド
以下の節では、BEA WebLogic Server の Java Messaging Service (JMS) について概説します。
WebLogic JMS は、WebLogic Server プラットフォームに緊密に統合されたエンタープライズ クラスのメッセージング システムです。JMS 仕様を完全にサポートし、標準の JMS API ではサポートされていないさまざまな WebLogic JMS 拡張機能もサポートします。
メッセージ指向ミドルウェア (Message-Oriented Middleware : MOM) とも呼ばれるエンタープライズ メッセージング システムを使用すると、複数のアプリケーションがメッセージの交換を通じて通信できます。メッセージとは、異なるアプリケーション間の通信を調整するために必要な情報が含まれているリクエスト、レポート、またはイベントのことです。メッセージで提供される抽象化の階層により、送り先システムについての詳細情報をアプリケーション コードから切り離すことができます。
Java Message Service (JMS) は、エンタープライズ メッセージング システムにアクセスするための標準の API です。具体的な JMS の特長は以下のとおりです。
次の図は、WebLogic JMS によるメッセージングの仕組みを示しています。
図で示されているように、WebLogic JMS はプロデューサ アプリケーションからメッセージを受信し、受け取ったメッセージをコンシューマ アプリケーションに配信します。
WebLogic Server は次の Java 仕様に準拠しています。
WebLogic Server は Sun Microsystems の J2EE 1.3 仕様に準拠しています。
WebLogic Server は JMS 仕様バージョン 1.0.2b に完全に準拠しており、プロダクション環境で使用できます。
WebLogic JMS では、JMS 仕様に規定されている標準の JMS API ではサポートされていないさまざまな WebLogic JMS 拡張機能 API もサポートします。また、WebLogic Server プラットフォームに緊密に統合されているため、高度なセキュリティで保護された J2EE アプリケーションを構築し、それらを WebLogic Server コンソールで容易にモニタおよび管理できます。XA トランザクションが完全にサポートされているだけでなく、クラスタ機能とサービス移行機能による高い可用性を特長としています。加えて、他のバージョンの WebLogic Server やサードパーティのメッセージ プロバイダとのシームレスな相互運用性も提供されます。
以下の節では、WebLogic JMS のユニークかつ強力な機能について概説します。
次の図は、WebLogic JMS のアーキテクチャを示しています。
図 1-2に示されているように、WebLogic JMS Server のアーキテクチャは主に以下の要素で構成されています。
WebLogic JMS のアーキテクチャでは、クラスタ内のあらゆるサーバから JMS 送り先へのクラスタワイドで透過的なアクセスをサポートすることで、複数の JMS サーバのクラスタ化が実装されます。WebLogic Server は、クラスタ全体への JMS の送り先と接続ファクトリの配布をサポートするようになりました。ただし、JMS トピックおよびキューが、クラスタ内の WebLogic Server インスタンスによって管理される点は変わりません。
WebLogic JMS のクラスタ化のコンフィグレーションについては「WebLogic JMS のクラスタ化のコンフィグレーション」を参照してください。WebLogic Server のクラスタ化の詳細については、『WebLogic Server クラスタ ユーザーズ ガイド』を参照してください。
注意 : ロード バランシングは動的ではありません。コンフィグレーションの段階で、システム管理者が JMS サーバの対象を指定してロード バランシングを定義します。
管理者は、クラスタ内の各サーバ インスタンスのデフォルト接続ファクトリを有効にするか、1 つまたは複数の接続ファクトリをコンフィグレーションしてクラスタ内の 1 つまたは複数のサーバ インスタンスを対象とすることで、クラスタ内のあらゆるサーバから送り先へのクラスタワイドで透過的なアクセスを確立できます。これにより、各接続ファクトリを複数の WebLogic Server インスタンスにデプロイできます。
アプリケーションでは、Java Naming and Directory Interface (JNDI) を使用して接続ファクトリをルックアップし、JMS サーバとの通信を確立するための接続を作成します。各 JMS サーバでは、複数の送り先に対するリクエストが処理されます。送り先へのリクエストが送信される WebLogic Server インスタンスが、接続ファクトリのホストであって、JMS サーバまたは送り先のホストではない場合、リクエストは接続ファクトリによって、JMS サーバと送り先のホストになっている適切な WebLogic Server インスタンスに転送されます。
接続ファクトリの詳細については、「WebLogic JMS の基礎」を参照してください。
「1 回限り」のサービスとして、WebLogic JMS はクラスタ化された環境に対して WebLogic Server に実装されている移行フレームワークを活用します。これにより、WebLogic JMS は、移行リクエストに適切に応答し、JMS サーバを正しい順序でオンラインまたはオフラインにすることができます。これには、スケジューリングされた移行だけでなく、WebLogic Server の障害への対応としての移行も含まれます。詳細については、「JMS サーバの移行可能対象のコンフィグレーション」を参照してください。
クラスタ用にコンフィグレーションしたロード バランシング アルゴリズム (ラウンドロビン アフィニティ、重みベース アフィニティ、またはランダム アフィニティ) は、JMS クライアント接続のためのサーバ アフィニティを提供します。JMS アプリケーションから指定したサーバ インスタンスに接続できる場合、JMS は同じサーバ インスタンスとの新しい JMS 接続を確立しようとします。サーバ アフィニティの詳細については、『WebLogic Server クラスタ ユーザーズ ガイド』の「クラスタでのロード バランシング」を参照してください。
注意 : 自動フェイルオーバは、このリリースの WebLogic JMS ではサポートされていません。手動フェイルオーバの実行の詳細については、「WebLogic Server の障害からの回復」を参照してください。
Sun Microsystem の JMS 仕様に規定されている API に加え、WebLogic JMS にはパブリックな API weblogic.jms.extensions が用意されています。この API では次の表に示す拡張機能用のクラスとメソッドが提供されます。
|
|
|
この API では、NO_ACKNOWLEDGE
と MULTICAST_NO_ACKNOWLEDGE
の確認応答モード、および以下のような例外の送出を含む拡張例外もサポートされています。
このリリースの WebLogic Server では、JMS の以下の拡張機能が新しく導入されています。
400KB 程度の JMS シン アプリケーション クライアント (wljmsclient.jar
) ファイルでは、クライアントサイド プログラムに必要な一連のサポート ファイルのみを含む小さいライブラリを使用し、クライアントサイドの WebLogic のサイズを大幅に削減しながら、完全な WebLogic JMS 機能を実現できます。JMS シン クライアントでは、標準の WebLogic シン アプリケーション クライアント JAR (wlclient.jar
) も使用する必要があります。このクライアントは約 300KB で、クラスタ化、セキュリティ、トランザクション、およびフェイルオーバに対する基本的なクライアント サポートが用意されています。「WebLogic JMS シン クライアント」を参照してください。
Administration Console の [外部 JMS サーバ] ノードを使用すると、外部 (WebLogic Server 以外の) JMS プロバイダをすばやくマップして、そのプロバイダの接続ファクトリと送り先を WebLogic JNDI ツリーにローカル JMS オブジェクトとして表示できます。[外部 JMS サーバ] のコンフィグレーションを使用すると、別のクラスタまたはドメインにある WebLogic Server のリモート インスタンスを WebLogic JNDI ツリーで参照することもできます。Administration Console オンライン ヘルプの「リモートまたは外部 JMS プロバイダへの単純なアクセス」を参照してください。
WebLogic Server では、JMS ラッパーを用いることで、EJB やサーブレットなどの J2EE コンポーネント内部で WebLogic JMS を簡単に使用できるようにするとともに、多数の拡張されたユーザビリティ機能とパフォーマンス機能を提供しています。これらの機能としては、JMS 接続オブジェクトとセッション オブジェクトの自動プーリング (およびメッセージ プロデューサ オブジェクトの一定のプーリング)、2 フェーズ コミット トランザクション (XA プロトコル) をサポートする WebLogic JMS 実装およびサードパーティ JMS プロバイダの自動トランザクション登録、JMS 接続のテストと接続失敗後の再接続、コンテナ管理のセキュリティ資格などがあります。「EJB とサーブレットでの JMS の使い方」を参照してください。
アクティブなメッセージ有効期限を使用すると、期限切れメッセージが即座に消去されます。さらに、期限切れメッセージ監査によって、期限の切れたメッセージを追跡するオプションが提供されます。メッセージの有効期限が切れたときにログに記録するか、期限の切れたメッセージを特別な送り先にリダイレクトすることができます。詳細については、Administration Console オンライン ヘルプの「期限切れメッセージの処理」を参照してください。
「送信ブロック」機能を使用すると、送り先 (キューまたはトピック) が指定の最大メッセージ割り当てを超過したときに、メッセージ プロデューサによる送り先へのメッセージ送信を一時的にブロックすることで、メッセージ割り当てエラーを回避できます。Administration Console オンライン ヘルプの「メッセージ プロデューサのブロックによる割り当て例外の回避」を参照してください。
JMS 仕様により、特定のプロデューサからコンシューマに最初に配信されるすべてのメッセージは、生成された順序でコンシューマに到着することが保証されています。WebLogic JMS はこの要件を満たすだけではなく、さらに再配信メッセージについても正しい順序を保証しています。詳細については、「メッセージの再配信の順序付け」を参照してください。
新しい JMS ヘルパー拡張メソッドにより、JMS 送り先を動的に削除できます。JMS サーバは削除された送り先をリアル タイムに削除します。従って、削除を有効にするために JMS サーバを再デプロイする必要はありません。「送り先の動的削除」を参照してください。
コンフィグレーション ウィザードは、WebLogic Server の管理ドメインとサーバ コンフィグレーションを作成する Java アプリケーションです。コンフィグレーション ウィザードを使用して、JMS、データベース接続 (JDBC)、セキュリティ グループなどのリソースや、セキュリティ ロール、およびユーザ アカウントをコンフィグレーションできます。既存のドメインを変更することもできます。『コンフィグレーション ウィザードの使い方』を参照してください。
WebLogic Server のこのリリースでは、次に示す JMS の機能が非推奨になりました。
weblogic.jms
パッケージの ServerSessionPoolFactory
クラスは WebLogic Server 8.1 では非推奨となり、weblogic.jms.extensions
パッケージの ServerSessionPoolFactory
クラスに置き換えられました。ServerSessionPoolFactory
を JNDI にバインドする場合は、weblogic.jms.extensions
パッケージの新しいバージョンを使用することをお勧めします。ただし、リリース 8.1 では引き続きいずれのバージョンでも JNDI ルックアップを実行できます。サーバ セッション プール ファクトリの詳細については、「サーバ セッション プールの定義」または「weblogic.jms.extensions.ServerSessionPoolFactory」の Javadoc を参照してください。
JMS ファイル ストアへの同期書き込みを無効化する次のコマンドライン起動フラグは、WebLogic Server 8.1 では非推奨になりました。
-Dweblogic.JMSFileStore.SynchronousWritesEnabled=false
-Dweblogic.JMSFileStore.store-name.SynchronousWritesEnabled=false
代わりに、Administration Console の [JMS|ストア] ノードを使用するか、JMX を使用して JMS ファイル ストアの [同期書き込みポリシー] 属性をコンフィグレーションします。同期書き込みポリシーのコンフィグレーションに関する詳細については、Administration Console オンライン ヘルプの「JMS ファイル ストアのパフォーマンスの向上」を参照してください。
[ユーザ トランザクションを有効化] および [サーバサイド XA を有効化] 属性は、WebLogic Server 8.1 のユーザ定義の接続ファクトリでは非推奨になっています。そのため、JTA ユーザ トランザクション用に XA 接続ファクトリを有効化する場合、必要となるのは [XA 接続ファクトリを有効化] 属性の設定のみです。XA ファクトリはトランザクション セッションには必要ありません。接続ファクトリのコンフィグレーションの詳細については、Administration Console オンライン ヘルプの「JMS 接続ファクトリのコンフィグレーション」を参照してください。