WebLogic ストア アンド フォワードのコンフィグレーションと管理

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

JMS メッセージに対する SAF のコンフィグレーション

JMS SAF (ストア アンド フォワード) 機能は、WebLogic SAF サービス上に構築され、高可用性を備えた JMS メッセージ生成を行います。たとえば、ローカル サーバ インスタンスに接続された JMS メッセージ プロデューサは、メッセージ送信時にリモートの送り先が一時的に利用できない場合でも、リモートの JMS 送り先に確実にメッセージを転送できます。JMS SAF は JMS アプリケーションからは透過的なので、JMS クライアント コードは既存の JMS API を使用して、リモート送り先にアクセスできます。

以下の節では、コンフィグレーションの詳細について説明します。

注意 : WebLogic SAF クライアントが提供するメカニズムにより、ネットワークに接続できない (一時的なエラー、ネットワーク障害など) ために SAF クライアントが JMS 送り先にアクセスできない場合でも、スタンドアロン クライアントはサーバ サイドの JMS 送り先に JMS メッセージを確実に送信できます。接続が切断されている間、SAF クライアントによって送信されたメッセージはクライアント上でローカルに格納され、クライアントが再接続されたときにサーバ サイドの JMS 送り先に転送されます。『スタンドアロン クライアント プログラマーズ ガイド』の「JMS SAF クライアントによる確実なメッセージ送信」を参照してください。

 


JMS モジュールの SAF リソース

JMS コンフィグレーション リソースは、WebLogic ドメインの外部のモジュール記述子ファイルに格納されます。これらのファイルは、weblogic-jmsmd.xsd スキーマに準拠する XML ドキュメントによって定義されます。JMS モジュールには、WebLogic Server での JMS メッセージの格納と転送を可能にする、SAF リソースのコンフィグレーションも含まれます。JMS モジュールの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「JMS リソースのコンフィグレーションについて」を参照してください。

JMS モジュールに対して SAF リソースをコンフィグレーションする場合には、JMS システム モジュールまたはアプリケーション モジュールで以下のリソースをコンフィグレーションする必要があります。

JMS SAF リソースがコンフィグレーションされると、コンフィグレーションされた SAF 送信エージェントによって、受信側へのメッセージの転送、確認応答が時間内に戻らなかった場合のメッセージの再送信、およびメッセージの永続性が必要になる場合の永続ストレージへのメッセージの一時的な格納が行われます。SAF エージェントのコンフィグレーションの詳細については、「ストア アンド フォワード サービスについて」を参照してください。

JMS SAF は JMS アプリケーションからは透過的です。既存の JMS アプリケーションは、コードを変更することなく、この機能を利用できます。実際には、JMS モジュールでインポート済み JMS 送り先をコンフィグレーションし、その後、リモートの JMS 送り先をローカルの JNDI 名に関連付ける必要があるだけです。JMS クライアント コードは既存の JMS API を使用して、インポート済み送り先にアクセスします。メッセージの生成のみが JMS ストア アンド フォワードの対象となるので、JMS クライアントは引き続き、インポート済み送り先から直接メッセージを消費する必要があります。

SAF インポート済み送り先

SAF 送り先 (キューまたはトピック) は、リモートのサーバ インスタンスやクラスタに関連付けられた JMS モジュール内の JMS 送り先 (キューまたはトピック) をローカルに表現したものです。このようなリモート送り先は、ローカルのクラスタやサーバ インスタンスに「インポート」されます。これにより、ローカルのサーバ インスタンスやクラスタから、リモートのサーバ インスタンスやクラスタにメッセージを送信することが可能になります。送り先に対する [SAF エクスポート ポリシー] パラメータが明示的に無効化されていない限り、デフォルトではすべての JMS 送り先が自動的にエクスポートされます。

インポートされた SAF 送り先の集合は、SAF インポート済み送り先と呼ばれます。インポート済み送り先の各集合は、SAF リモート コンテキストと関連付けられます。また、それらは同じ JNDI プレフィックス、生存時間のデフォルト (メッセージの有効期限)、および SAF エラー処理オブジェクトを共有します。

JMS プロデューサが SAF 送り先にメッセージを送信すると、これらのメッセージは後の配信に備えて SAF 送り先に格納されます。SAF エージェントは、(インポート済み送り先が表す) リモート JMS 送り先へ、その送り先がアクセス可能であれば SAF リモート コンテキストを使用してメッセージを転送します。

SAF リモート コンテキスト

SAF リモート コンテキストでは、JMS 送り先のエクスポート元である、リモートのサーバ インスタンスまたはクラスタの URL が定義されます。また、リモートのサーバ インスタンスまたはクラスタで認証および認可されるためのセキュリティ資格も含まれます。インポート済み送り先を使用する場合は、SAF リモート コンテキストのコンフィグレーションが必須です。SAF リモート コンテキストは、複数の SAF インポート済み送り先のコンフィグレーションで再利用できます。

次に示す URL は、SAF リモート コンテキストで、スタンドアロン JMS 送り先をインポートするリモート管理対象サーバを 1 つ定義した場合の例です。

<URL>
t3://123.0.0.1:7001
</URL>

リモート クラスタから分散送り先をインポートする場合は、DNS サーバ名または IP アドレスをカンマで区切って指定します。次に示す URL は、SAF リモート コンテキストで、分散送り先のメンバーをインポートするリモート クラスタを定義した場合の例です。

<URL>
t3://123.0.0.1:7001,123.0.0.1:7002,123.0.0.1:7003
</URL>

WebLogic クラスタとの最初の接続ポイントを指定する方法については、『WebLogic JNDI プログラマーズ ガイド』の「クラスタ環境での WebLogic JNDI の使い方」を参照してください。

SAF エラー処理

SAF エラー処理リソースでは、SAF サービスがリモート送り先へのメッセージ転送に失敗した場合に行うアクションを定義します。SAF エラー処理リソースは、SAF インポート済み送り先を使用する場合でも必須ではありませんが、ベスト プラクティスとしてお勧めします。

コンフィグレーション オプションには、以下のパラメータが含まれます。

SAF JMS の仕組み

図 3-1 に、Domain1 の Domain1Module-jms.xml モジュール内の QueueSend キューに生成された JMS メッセージが、SAF エージェントによって Domain2 の Domain2Module-jms.xml モジュール内の QueueReceive キューに転送される仕組みを示します。

図 3-1 JMS メッセージのストア アンド フォワード

JMS メッセージのストア アンド フォワード

 


JMS SAF リソースの作成

JMS モジュールの SAF リソースは、以下のいずれかの方法で作成できます。

 


JMS 送り先の SAF リソースをコンフィグレーションする主な手順

Administration Console を使用して、リモート送り先に JMS メッセージを転送するために SAF リソースをコンフィグレーションする主な手順は次のとおりです。

  1. 送信側のローカル ドメインで SAF 送信エージェントをコンフィグレーションします。Administration Console オンライン ヘルプの「ストア アンド フォワード エージェントの作成」を参照してください。
  2. 必要に応じて、送信側と受信側の両方で JMS 送り先リソースを格納する JMS システム モジュールを作成します。Administration Console オンライン ヘルプの「JMS システム モジュールのコンフィグレーション」を参照してください。
  3. 詳細については、『WebLogic JMS のコンフィグレーションと管理』の「JMS システム モジュール」を参照してください。

  4. 送信側の JMS モジュールで、リモート キューまたはトピックのエクスポート元である受信側の URL を定義する SAF リモート コンテキスト リソースをコンフィグレーションします。手順については、Administration Console オンライン ヘルプの「SAF リモート コンテキストの作成」を参照してください。
  5. 必要に応じて、送信側の JMS モジュールで、SAF サービスがリモート送り先へのメッセージ転送に失敗した場合に行うアクションを定義する SAF エラー処理コンフィグレーションをコンフィグレーションします。手順については、Administration Console オンライン ヘルプの「SAF エラー処理リソースの作成」を参照してください。
  6. 送信側の JMS モジュールで、SAF インポート済み送り先をコンフィグレーションし、それをモジュールで作成した SAF リモート コンテキストおよび SAF エラー処理リソースに関連付けます。手順については、Administration Console オンライン ヘルプの「JMS システム モジュールにおける SAF インポート済み送り先の作成」を参照してください。
  7. 作成した SAF インポート済み送り先を再び開いて、受信側のリモート キューまたはトピックを表す SAF キューまたはトピックをコンフィグレーションします。SAF キューまたはトピックは、リモート キューまたはトピックと同じ JNDI 名を使用します。手順については、以下を参照してください。
  8. デフォルトでは、すべての JMS 送り先は、SAF インポート済み送り先としてアクセス可能です。ただし、送り先の SAF エクスポート ポリシーのパラメータ値を「なし」に変更することで、その送り先をエクスポートしないように明示的に指定できます。これで、リモート ユーザは、ストア アンド フォワードを使用して送り先にメッセージを送信できなくなります。

 


JMS メッセージに対する SAF の設計

以下の節では、JMS メッセージを格納および転送するために WebLogic SAF を設計およびコンフィグレーションする場合に役立つ情報について説明します。

サービスの品質 (QOS) レベルの選択

永続 JMS メッセージは、SAF サービスによって常に「必ず 1 回」の QOS で転送されます。非永続メッセージでは、SAF インポート済みキューとトピックに対して以下の 3 種類の QOS レベルを定義できます。

SAF による配信モードの処理方法

SAF アプリケーションでは、メッセージごとに配信モードを指定することもできます。

メッセージ順序単位の使用

クラスタ内では、JMS プロデューサをメッセージ順序単位に関連付けることができます。これにより、スタンドアロンのメッセージ プロデューサまたは 1 つのプロデューサとして機能するプロデューサのグループは、処理順序に関して複数のメッセージを 1 つの単位にグループ化できるようになります。JMS 順序単位の詳細については、『WebLogic JMS プログラマーズ ガイド』の「メッセージ順序単位の使用」を参照してください。

SAF インポート済み送り先ではハッシュ マップまたはパス サービスのいずれかを使用して、クラスタ内の順序付けされたメッセージをグループ化できます。ただし、パス サービスをコンフィグレーションするのがベスト プラクティスです。パス サービスは、メッセージのグループとメッセージング リソース (SAF エージェントなど) との間のマッピングを格納できる永続マップです。パス サービスのコンフィグレーションの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「WebLogic パス サービスの使用」を参照してください。

トランザクション メッセージ

アプリケーションのメッセージがトランザクション内にある場合、「必ず 1 回」のセマンティクスを維持するために、永続ストレージへのメッセージの保存はそのユーザ トランザクションの一環として行われます。

特に、メッセージの永続ストレージからの削除は、アプリケーションでトランザクションのロールバックが決定された場合にトランザクション ロールバックの一環として行われます。一方、転送はアプリケーション トランザクションの一環としては行われません。トランザクションがコミットされるまで、トランザクション メッセージは送信エージェントによって転送されません。トランザクション内では、メッセージの順序はメッセージが送信された時間に基づいて保持されます。

SAF 境界を越えるメッセージの圧縮

JMS ストア アンド フォワードでは、別々のクラスタ間でメッセージが転送される場合、メッセージを圧縮できます。メッセージ圧縮のしきい値は、WLMessageProducer インタフェースの JMS API 拡張機能を使用することによってプログラム的に設定するか、または接続ファクトリまたは SAF リモート コンテキストでデフォルトの圧縮しきい値を指定することによって管理的に設定できます。

JMS メッセージ圧縮の使用方法の詳細については、『WebLogic Server パフォーマンス チューニング ガイド』の「メッセージの圧縮」を参照してください。

SAF リモート コンテキストの圧縮しきい値を超える非圧縮メッセージは、SAF 境界を越えて転送されるときに圧縮されます。メッセージは、リモート エンドポイントで受信されるまで、圧縮されたままです。接続ファクトリで圧縮が有効になっているために SAF 境界を越えるときにメッセージがすでに圧縮されている場合は、SAF 圧縮がトリガされるかどうかに関係なく、メッセージは圧縮されたまま SAF 境界を越えて転送されます。

分散送り先に対する SAF

リモート エンドポイントは分散送り先であってもかまいません。リモート分散送り先へのメッセージは、スタンドアロンのリモート送り先に転送されるメッセージと同様に格納および転送されます。SAF 送信エージェントは、一般的な方法と同じ方法で分散送り先のメンバーにメッセージをルーティングします。分散送り先のコンフィグレーションの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「分散送り先リソースのコンフィグレーション」を参照してください。

SAF での JMSReplyTo フィールドの使用

一般的に、JMS アプリケーションは JMSReplyTo ヘッダ フィールドを使用して、一時的な送り先の名前を他のアプリケーションに対して公開できます。ただし、JMSReplyTo フィールドを使用した一時的な送り先の使用は、SAF インポート済み送り先ではサポートされていません。

JMS 一時送り先の使用方法の詳細については、『WebLogic JMS プログラマーズ ガイド』の「一時的な送り先の使い方」を参照してください。

SAF 送り先の保護

SAF インポート済み送り先では、以下のセキュリティ対策が適用されています。


  ページの先頭       前  次