WebLogic ストア アンド フォワードのコンフィグレーションと管理
![]() |
![]() |
![]() |
![]() |
JMS ストア アンド フォワード機能は、WebLogic ストア アンド フォワード (SAF) サービス上に構築され、高可用性を備えた JMS メッセージ生成を行います。たとえば、ローカルのサーバ インスタンスに接続された JMS メッセージ プロデューサは、メッセージ送信時にリモートの JMS 送り先が一時的に使用できない場合でも、そのリモート送り先に確実にメッセージを転送できます。JMS ストア アンド フォワードは JMS アプリケーションからは透過的なので、JMS クライアント コードは既存の JMS API を使用して、リモート送り先にアクセスできます。
以下の節では、コンフィグレーションの詳細について説明します。
このリリースでは、JMS コンフィグレーション (キュー、トピック、接続ファクトリなど) は WebLogic ドメインの外部のモジュール記述子ファイルに格納されます。これらのファイルは、weblogic-jmsmd.xsd
スキーマに準拠する XML ドキュメントによって定義されます。JMS モジュールには、WebLogic JMS での JMS メッセージの格納と転送を可能にする、SAF リソースのコンフィグレーションも含まれます。JMS モジュールの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「JMS リソースのコンフィグレーションについて」を参照してください。
JMS SAF リソースがコンフィグレーションされると、コンフィグレーションされた SAF 送信エージェントによって、受信側へのメッセージの転送、確認応答が時間内に戻らなかった場合のメッセージの再送信、およびメッセージの永続性が必要になる場合の永続ストレージへのメッセージの格納が行われます。
JMS ストア アンド フォワードは JMS アプリケーションからは透過的です。既存の JMS アプリケーションは、コードを変更することなく、この機能を利用できます。実際には、JMS モジュールでインポート済み JMS 送り先をコンフィグレーションし、その後、リモートの JMS 送り先をローカルの JNDI 名に関連付ける必要があるだけです。JMS クライアント コードは既存の JMS API を使用して、インポート済み送り先にアクセスします。メッセージの生成のみが JMS ストア アンド フォワードの対象となるので、JMS クライアントは引き続き、インポート済み送り先から直接メッセージを消費する必要があります。
JMS モジュールに対して SAF リソースをコンフィグレーションする場合には、以下のリソースをコンフィグレーションする必要があります。
SAF 送り先は、ローカルのサーバ インスタンスまたはクラスタにインポートされた、リモートのサーバ インスタンスまたはクラスタの JMS キューまたはトピックを表します。これにより、ローカルのサーバ インスタンスまたはクラスタは、リモートのサーバ インスタンスまたはクラスタにメッセージを送信できるようになります。送り先の SAF エクスポートのパラメータが明示的に無効になっていない限り、デフォルトでは、すべての JMS 送り先が自動でエクスポートされます。
インポートされた SAF 送り先の集合は、SAF インポート済み送り先と呼ばれます。インポート済み送り先の各集合は、SAF リモート コンテキストと関連付けられます。また、それらは同じ JNDI プレフィックス、生存時間のデフォルト (メッセージの有効期限)、および SAF エラー処理オブジェクトを共有します。
JMS プロデューサが SAF 送り先にメッセージを送信すると、これらのメッセージは後の配信に備えて SAF 送り先に格納されます。SAF エージェントは、(インポート済み送り先が表す) リモート JMS 送り先へ、その送り先がアクセス可能であれば SAF リモート コンテキストを使用してメッセージを転送します。
SAF リモート コンテキストでは、JMS 送り先のエクスポート元である、リモートのサーバ インスタンスまたはクラスタの URL が定義されます。また、リモートのサーバ インスタンスまたはクラスタで認証および認可されるためのセキュリティ資格も含まれます。インポート済み送り先を使用する場合は、SAF リモート コンテキストのコンフィグレーションが必須です。SAF リモート コンテキストは、複数のインポート済み送り先のコンフィグレーションで再利用できます。
SAF エラー処理リソースでは、SAF サービスがリモート送り先へのメッセージ転送に失敗した場合に行うアクションを定義します。コンフィグレーション オプションには、エラー処理ポリシー (リダイレクト、ログ、破棄、または常に転送)、ログ フォーマット、および送信の再試行に関するパラメータが含まれます。SAF エラー処理リソースは、インポート済み送り先を使用する場合でも必須ではありませんが、ベスト プラクティスとしてお勧めします。
JMS モジュールの SAF リソースは、以下のいずれかの方法で作成できます。
JMSSystemResourceMBean
および JMSRuntimeMBean
の各 MBean にアクセスして JMS の送り先と接続を作成および管理できます。詳細については、『JMX によるカスタム管理ユーティリティの開発』の「Overview of WebLogic Server Subsystem MBeans」を参照してください。JMSModuleHelper
の Javadoc を参照してください。
Administration Console を使用して、リモート送り先に JMS メッセージを転送するために SAF リソースをコンフィグレーションする主な手順は次のとおりです。
詳細については、『WebLogic JMS のコンフィグレーションと管理』の「JMS システム リソース モジュール」を参照してください。
以下の節では、JMS メッセージを転送するために WebLogic SAF を設計およびコンフィグレーションする場合に役立つ情報について説明します。
永続 JMS メッセージは、SAF サービスによって常に「必ず 1 回」の QOS で転送されます。非永続メッセージでは、SAF インポート済みキューとトピックに対して以下の 3 種類の QOS レベルを定義できます。
SAF アプリケーションでは、メッセージごとに配信モードを指定することもできます。
クラスタ内では、JMS プロデューサをメッセージ順序単位に関連付けることができます。これにより、スタンドアロンのメッセージ プロデューサまたは 1 つのプロデューサとして機能するプロデューサのグループは、処理順序に関して複数のメッセージを 1 つの単位にグループ化できるようになります。JMS 順序単位の詳細については、『WebLogic JMS プログラマーズ ガイド』の「Using Message Unit-of-Order」を参照してください。
SAF インポート済み送り先ではハッシュ マップまたはパス サービスのいずれかを使用して、クラスタ内の順序付けされたメッセージをグループ化できます。ただし、パス サービスをコンフィグレーションするのがベスト プラクティスです。パス サービスは、メッセージのグループとメッセージング リソース (SAF エージェントなど) との間のマッピングを格納できる永続マップです。パス サービスのコンフィグレーションの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「WebLogic パス サービスの使用」を参照してください。
アプリケーションのメッセージがトランザクション内にある場合、「必ず 1 回」のセマンティクスを維持するために、永続ストレージへのメッセージの保存はそのユーザ トランザクションの一環として行われます。
特に、メッセージの永続ストレージからの削除は、アプリケーションでトランザクションのロールバックが決定された場合にトランザクション ロールバックの一環として行われます。一方、転送はアプリケーション トランザクションの一環としては行われません。トランザクションがコミットされるまで、トランザクション メッセージは送信エージェントによって転送されません。トランザクション内では、メッセージの順序はメッセージが送信された時間に基づいて保持されます。
JMS ストア アンド フォワードでは、別々のクラスタ間でメッセージが転送される場合、メッセージを圧縮できます。メッセージ圧縮のしきい値は、WLMessageProducer
インタフェースの JMS API 拡張機能を使用することによってプログラム的に設定するか、または接続ファクトリまたは SAF リモート コンテキストでデフォルトの圧縮しきい値を指定することによって管理的に設定できます。
JMS メッセージ圧縮の使用方法の詳細については、『WebLogic JMS のコンフィグレーションと管理』の「メッセージの圧縮」を参照してください。
SAF リモート コンテキストの圧縮しきい値を超える非圧縮メッセージは、SAF 境界を超えて転送されるときに圧縮されます。メッセージは、リモート エンドポイントで受信されるまで、圧縮されたままです。接続ファクトリで圧縮が有効になっているために SAF 境界を超えるときにメッセージがすでに圧縮されている場合は、SAF 圧縮がトリガされるかどうかに関係なく、メッセージは圧縮されたまま SAF 境界を超えて転送されます。
リモート エンドポイントは分散送り先であってもかまいません。リモート分散送り先へのメッセージは、スタンドアロンのリモート送り先に転送されるメッセージと同様に格納および転送されます。SAF 送信エージェントは、一般的な方法と同じ方法で分散送り先のメンバーにメッセージをルーティングします。分散送り先のコンフィグレーションの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「分散送り先のコンフィグレーション」を参照してください。
一般的に、JMS アプリケーションは JMSReplyTo
ヘッダ フィールドを使用して、一時的な送り先の名前を他のアプリケーションに対して公開できます。ただし、JMSReplyTo
フィールドを使用した一時的な送り先の使用は、SAF インポート済み送り先ではサポートされていません。
JMS 一時送り先の使用方法の詳細については、『WebLogic JMS プログラマーズ ガイド』の「Using Temporary Destinations」を参照してください。
SAF インポート済み送り先では、以下のセキュリティ対策が適用されています。
JMSXUserID
が SAF 境界を越えて保持されることはない。JMSXUserID とは、メッセージの送信者であるユーザを識別するシステム生成のプロパティであり、JMS 仕様で定義されています。
![]() ![]() |
![]() |
![]() |