Oracle® Fusion Middleware Oracle WebLogic Server ストア アンド フォワードのコンフィグレーションと管理 11g リリース 1 (10.3.1) B55551-01 |
|
![]() 戻る |
![]() 次へ |
JMS SAF (ストア アンド フォワード) 機能は、WebLogic SAF サービス上に構築され、高可用性を備えた JMS メッセージ生成を行います。たとえば、ローカルのサーバ インスタンスに接続された JMS メッセージ プロデューサは、メッセージ送信時にリモートの JMS 送り先が一時的に使用できない場合でも、そのリモート送り先に確実にメッセージを転送できます。JMS SAF は JMS アプリケーションからは透過的なので、JMS クライアント コードは既存の JMS API を使用して、リモート送り先にアクセスできます。
以下の節では、コンフィグレーションの詳細について説明します。
注意 : WebLogic SAF クライアントが提供するメカニズムにより、ネットワークに接続できない (一時的なエラー、ネットワーク障害など) ために SAF クライアントが JMS 送り先にアクセスできない場合でも、スタンドアロン クライアントはサーバサイドの JMS 送り先に JMS メッセージを確実に送信できます。接続が切断されている間、SAF クライアントによって送信されたメッセージはクライアント上でローカルに格納され、クライアントが再接続されたときにサーバサイドの JMS 送り先に転送されます。『Oracle Fusion Middleware Oracle WebLogic Server スタンドアロン クライアント プログラマーズ ガイド』の「JMS SAF クライアントによる確実なメッセージ送信」を参照してください。 |
JMS コンフィグレーション リソースは、WebLogic ドメインの外部のモジュール記述子ファイルに格納されます。これらのファイルは、weblogic-jmsmd.xsd
スキーマに準拠する XML ドキュメントによって定義されます。JMS モジュールには、WebLogic Server での JMS メッセージの格納と転送を可能にする、SAF リソースのコンフィグレーションも含まれます。JMS モジュールの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS のコンフィグレーションと管理』の「JMS リソースのコンフィグレーションについて」を参照してください。
JMS モジュールに対して SAF リソースをコンフィグレーションする場合には、JMS システム モジュールまたはアプリケーション モジュールで以下のリソースをコンフィグレーションする必要があります。
JMS SAF リソースがコンフィグレーションされると、コンフィグレーションされた SAF 送信エージェントによって、受信側へのメッセージの転送、確認応答が時間内に戻らなかった場合のメッセージの再送信、およびメッセージの永続性が必要になる場合の永続ストレージへのメッセージの一時的な格納が行われます。SAF エージェントのコンフィグレーションの詳細については、「ストア アンド フォワード サービスについて」を参照してください。
JMS SAF は JMS アプリケーションからは透過的です。既存の JMS アプリケーションは、コードを変更することなく、この機能を利用できます。実際には、JMS モジュールでインポート済み JMS 送り先をコンフィグレーションし、その後、リモートの JMS 送り先をローカルの JNDI 名に関連付ける必要があるだけです。JMS クライアント コードは既存の JMS API を使用して、インポート済み送り先にアクセスします。メッセージの生成のみが JMS ストア アンド フォワードの対象となるので、JMS クライアントは引き続き、インポート済み送り先から直接メッセージを消費する必要があります。
SAF 送り先 (キューまたはトピック) は、リモートのサーバ インスタンスやクラスタに関連付けられた JMS モジュール内の JMS 送り先 (キューまたはトピック) をローカルに表現したものです。このようなリモート送り先は、ローカルのクラスタやサーバ インスタンスに「インポート」されます。これにより、ローカルのサーバ インスタンスやクラスタから、リモートのサーバ インスタンスやクラスタにメッセージを送信することが可能になります。送り先に対する [SAF エクスポート ポリシー] パラメータが明示的に無効化されていない限り、デフォルトではすべての JMS 送り先が自動的にエクスポートされます。
インポートされた SAF 送り先の集合は、SAF インポート済み送り先と呼ばれます。インポート済み送り先の各集合は、SAF リモート コンテキストと関連付けられます。また、それらは同じ JNDI プレフィックス、存続時間のデフォルト (メッセージの有効期限)、および SAF エラー処理オブジェクトを共有します。
JMS プロデューサが SAF 送り先にメッセージを送信すると、これらのメッセージは後の配信に備えて SAF 送り先に格納されます。SAF エージェントは、(インポート済み送り先が表す) リモート JMS 送り先へ、その送り先がアクセス可能であれば 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 クラスタとの最初の接続ポイントを指定する方法については、『Oracle Fusion Middleware Oracle WebLogic Server JNDI プログラマーズ ガイド』の「クラスタ環境での WebLogic JNDI の使い方」を参照してください。
SAF エラー処理リソースでは、SAF サービスがリモート送り先へのメッセージ転送に失敗した場合に行うアクションを定義します。SAF エラー処理リソースは、SAF インポート済み送り先を使用する場合でも必須ではありませんが、ベスト プラクティスとしてお勧めします。
コンフィグレーション オプションには、以下のパラメータが含まれます。
[メッセージ処理ポリシー :]
[破棄] - デフォルトでは、期限切れのメッセージは単にシステムから削除されます。削除はログに記録されず、メッセージは別の場所にリダイレクトされません。
[ログ] - 期限切れのメッセージを削除し、メッセージがシステムから削除されたことを示すエントリをサーバ ログ ファイルに書き込みます。実際にログに記録される情報は、[ログ フォーマット] フィールドで定義します。
[リダイレクト] - 期限切れのメッセージを現在の位置から、インポート済みの SAF 送り先に定義されているエラー送り先へ移動します。
[常に転送] - インポート済みの送り先に対して設定された SAF デフォルト存続時間と、メッセージに対して設定された存続時間を無視するので、期限が切れた後でもメッセージをリモート送り先へ転送します。このオプションは、アプリケーションでリモート送り先に有効期限ポリシーが設定されていても、それらのメッセージをリモート送り先の有効期限プロセスで処理したい場合に便利です。
[ログ フォーマット] - [ログ] ポリシーを選択した場合は、このフィールドを使用して、メッセージのどの情報をログに記録するかを定義します。
[エラー送り先] - [リダイレクト] ポリシーを選択した場合は、このフィールドを使用して、期限切れメッセージをリダイレクトするローカルの SAF 送り先を選択します。
図 3-1 に、Domain1 の Domain1Module-jms.xml モジュール内の QueueSend
キューに生成された JMS メッセージが、SAF エージェントによって Domain2 の Domain2Module-jms.xml モジュール内の QueueReceive
キューに転送される仕組みを示します。
JMS モジュールの SAF リソースは、以下のいずれかの方法で作成できます。
WebLogic Server Administration Console を使用する。これにより、使用している環境の JMS システム モジュールおよび JMS システム リソースをコンフィグレーション、変更、対象指定、モニタ、および削除できます。JMS SAF リソースのコンフィグレーションの手順については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「JMS SAF のコンフィグレーション」を参照してください。
WebLogic Scripting Tool (WLST) を使用する。これにより、JMS サーバと JMS システム リソースを作成および管理できます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS のコンフィグレーションと管理』の「WLST を使用した JMS サーバと JMS システム モジュール リソースの管理」を参照してください。
WebLogic Java Management Extensions (JMX) を使用する。これにより、SAFImportedDestinationsBean
、SAFRemoteContextBean
、および SAFErrorHandlingBean
管理 MBean にアクセスして、JMS モジュールの SAF リソースを作成および管理できます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMX によるカスタム管理ユーティリティの開発』の「WebLogic Server サブシステム MBean の概要」を参照してください。
JMS モジュール ヘルパー拡張 API を使用する。これにより、JMS 実行時 MBean の検索と、特定のモジュール内の JMS システム モジュール コンフィグレーション リソースの管理 (検索、作成、削除) を行うことができます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド』の「JMS モジュール ヘルパーを使用したアプリケーションの管理」または『Oracle Fusion Middleware Oracle WebLogic Server API リファレンス』の「JMSModuleHelper
」を参照してください。
Administration Console を使用して、リモート送り先に JMS メッセージを転送するために SAF リソースをコンフィグレーションする主な手順は次のとおりです。
送信側のローカル ドメインで SAF 送信エージェントをコンフィグレーションします。『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「ストア アンド フォワード エージェントの作成」を参照してください。
必要に応じて、送信側と受信側の両方で JMS 送り先リソースを格納する JMS システム モジュールを作成します。『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「JMS システム モジュールのコンフィグレーション」を参照してください。
詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS のコンフィグレーションと管理』の「JMS システム モジュール」を参照してください。
送信側の JMS モジュールで、リモート キューまたはトピックのエクスポート元である受信側の URL を定義する SAF リモート コンテキスト リソースをコンフィグレーションします。手順については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「SAF リモート コンテキストの作成」を参照してください。
必要に応じて、送信側の JMS モジュールで、SAF サービスがリモート送り先へのメッセージ転送に失敗した場合に行うアクションを定義する SAF エラー処理コンフィグレーションをコンフィグレーションします。手順については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「SAF エラー処理リソースの作成」を参照してください。
送信側の JMS モジュールで、SAF インポート済み送り先をコンフィグレーションし、それをモジュールで作成した SAF リモート コンテキストおよび SAF エラー処理リソースに関連付けます。手順については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「JMS システム モジュールにおける SAF インポート済み送り先の作成」を参照してください。
作成した SAF インポート済み送り先を再び開いて、受信側のリモート キューまたはトピックを表す SAF キューまたはトピックをコンフィグレーションします。SAF キューまたはトピックは、リモート キューまたはトピックと同じ JNDI 名を使用します。手順については、以下を参照してください。
『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「SAF キューの作成」
『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「SAF トピックの作成」
デフォルトでは、すべての JMS 送り先は、SAF インポート済み送り先としてアクセス可能です。ただし、送り先の SAF エクスポート ポリシーのパラメータ値を「なし」に変更することで、その送り先をエクスポートしないように明示的に指定できます。これで、リモート ユーザは、ストア アンド フォワードを使用して送り先にメッセージを送信できなくなります。
以下の節では、JMS メッセージを格納および転送するために WebLogic SAF を設計およびコンフィグレーションする場合に役立つ情報について説明します。
永続 JMS メッセージは、SAF サービスによって常に「必ず 1 回」の QOS で転送されます。非永続メッセージでは、SAF インポート済みキューとトピックに対して以下の 3 種類の QOS レベルを定義できます。
[必ず 1 回] - もっとも高レベルの QOS。メッセージがリモート エンドポイントに 1 回だけ送信されます。[必ず 1 回] を指定すると、サーバのクラッシュ時やネットワークのダウン時にもメッセージは存続し、各メッセージがエンドポイントに 1 つだけ存在する状態にできます。
[1 回以上] - メッセージはリモート エンドポイントに少なくとも 1 回は転送されますが、重複する可能性があります。[1 回以上] を指定すると、メッセージの転送中に発生したネットワーク障害やサーバのクラッシュにより、そのメッセージの複数のコピーがリモートのエンドポイントに現れることがあります。
[最大 1 回] - もっとも低レベルの QOS。各メッセージがリモート エンドポイントに (送信できた場合には) 1 回だけ送信されます。このレベルでは、メッセージが必ずしもエンドポイントに転送されるとは限りません。[最大 1 回] を指定していると、ネットワーク障害やサーバのクラッシュによってメッセージが失われることがあります。メッセージが重複してエンドポイントに届くことはありません。
SAF アプリケーションでは、メッセージごとに配信モードを指定することもできます。
永続メッセージは、受信側に正常に転送され、確認応答されるまで送信側の永続ストアに保存されます。
非永続メッセージは、受信側がそれらを確認応答するまで送信側のメモリ内に存在し続けます (つまり、非永続メッセージは送信側がクラッシュすると失われるおそれがあります)。
クラスタ内では、JMS プロデューサをメッセージ順序単位に関連付けることができます。これにより、スタンドアロンのメッセージ プロデューサまたは 1 つのプロデューサとして機能するプロデューサのグループは、処理順序に関して複数のメッセージを 1 つの単位にグループ化できるようになります。JMS 順序単位の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド』の「メッセージ順序単位の使用」を参照してください。
SAF インポート済み送り先ではハッシュ マップまたはパス サービスのいずれかを使用して、クラスタ内の順序付けされたメッセージをグループ化できます。ただし、パス サービスをコンフィグレーションするのがベスト プラクティスです。パス サービスは、メッセージのグループとメッセージング リソース (SAF エージェントなど) との間のマッピングを格納できる永続マップです。パス サービスのコンフィグレーションについては、『Oracle Fusion Middleware Oracle WebLogic Server JMS のコンフィグレーションと管理』の「WebLogic パス サービスの使用」を参照してください。
アプリケーションのメッセージがトランザクション内にある場合、「必ず 1 回」のセマンティクスを維持するために、永続ストレージへのメッセージの保存はそのユーザ トランザクションの一環として行われます。
特に、メッセージの永続ストレージからの削除は、アプリケーションでトランザクションのロールバックが決定された場合にトランザクション ロールバックの一環として行われます。一方、転送はアプリケーション トランザクションの一環としては行われません。トランザクションがコミットされるまで、トランザクション メッセージは送信エージェントによって転送されません。トランザクション内では、メッセージの順序はメッセージが送信された時間に基づいて保持されます。
JMS ストア アンド フォワードでは、別々のクラスタ間でメッセージが転送される場合、メッセージを圧縮できます。メッセージ圧縮のしきい値は、WLMessageProducer
インタフェースの JMS API 拡張機能を使用することによってプログラム的に設定するか、接続ファクトリまたは JMS SAF リモート コンテキストで [デフォルト圧縮しきい値] を指定することによって管理的に設定できます。
JMS メッセージ圧縮の使用方法の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server パフォーマンス チューニング ガイド』の「メッセージの圧縮」を参照してくだい。
SAF リモート コンテキストの圧縮しきい値を超える非圧縮メッセージは、SAF 境界を越えて転送されるときに圧縮されます。メッセージは、リモート エンドポイントで受信されるまで、圧縮されたままです。接続ファクトリで圧縮が有効になっているために SAF 境界を越えるときにメッセージがすでに圧縮されている場合は、SAF 圧縮がトリガされるかどうかに関係なく、メッセージは圧縮されたまま SAF 境界を越えて転送されます。
リモート エンドポイントは分散送り先であってもかまいません。リモート分散送り先へのメッセージは、スタンドアロンのリモート送り先に転送されるメッセージと同様に格納および転送されます。SAF 送信エージェントは、一般的な方法と同じ方法で分散送り先のメンバーにメッセージをルーティングします。分散送り先のコンフィグレーションの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS のコンフィグレーションと管理』の「分散送り先のコンフィグレーション」を参照してください。
一般的に、JMS アプリケーションは JMSReplyTo
ヘッダ フィールドを使用して、一時的な送り先の名前を他のアプリケーションに対して公開できます。ただし、JMSReplyTo
フィールドを使用した一時的な送り先の使用は、SAF インポート済み送り先ではサポートされていません。
JMS 一時送り先の使用方法の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド』の「一時的な送り先の使い方」を参照してください。
SAF インポート済み送り先では、以下のセキュリティ対策が適用されています。
SAF インポート済みキューとトピックに対してセキュアなロールとポリシーを設定できる。ロールとポリシーのコンフィグレーションの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の以下の節を参照してください。
SAF サービスでは、メッセージの JMSXUserID
が SAF 境界を越えて保持されることはない。JMSXUserID とは、メッセージの送信者であるユーザを識別するシステム生成のプロパティであり、JMSXUserID は、JMS 仕様で定義され、Sun Microsystems によって http://java.sun.com/products/jms/docs.html
で発行されます。