![]() ![]() ![]() ![]() |
以下の節では、JMS SAF クライアント機能をコンフィグレーションおよび使用して、スタンドアロンの JMS クライアントからサーバサイドの JMS 送り先にメッセージを確実に送信する方法について説明します。
JMS SAF クライアント機能は、WebLogic Server 9.0 で導入した JMS ストア アンド フォワード サービスをスタンドアロン JMS クライアントに拡張したものです。この機能を使用することで、(一時的なネットワーク接続の障害などが原因で) JMS クライアントが送り先にアクセスできない場合でも、JMS クライアントはサーバサイドの JMS 送り先にメッセージを確実に送信できるようになります。サーバとの接続が切断されている間、JMS SAF クライアントによって送信されたメッセージはクライアントのファイル システム上でローカルに格納され、クライアントが再接続するときに、サーバサイドの JMS 送り先に転送されます。
JMS SAF クライアント機能は、主に JMS SAF クライアント実装と SAF フォワーダで構成されています。前者は、ローカルのファイル システムにあるクライアントサイドの永続ストアにメッセージを直接書き込むために使用され、後者は、永続ストアに書き込まれたメッセージを取得して WebLogic Server インスタンスに送信するために使用されます。また、必要に応じて JMS SAF クライアントが SAF フォワーダ メカニズムを使用するかしないかを設定できる SAFClient
初期化 API (weblogic.jms.extensions
) も用意されています。詳細については、「JMS SAF クライアントの初期化 API」を参照してください。
注意 : | サーバサイドの WebLogic JMS SAF でのアクセスできない可能性のある送り先に JMS メッセージを確実に送信する方法の詳細については、『WebLogic ストア アンド フォワードのコンフィグレーションと管理』の「JMS メッセージに対する SAF のコンフィグレーション」を参照してください。 |
サーバサイドではコンフィグレーションを行う必要がありませんが、クライアントサイドでは各クライアントでコンフィグレーションを行う必要があります。以下の節では、クライアントサイドの SAF を使用するための JMS クライアントのコンフィグレーション方法について説明します。
各クライアント マシンには、JMS SAF クライアントのコンフィグレーション ファイルが必要です。コンフィグレーション ファイルには、JMS SAF クライアント環境での処理に必要なサーバサイドの接続ファクトリと送り先に関する情報を指定します。指定の JMS モジュールのコンフィグレーション ファイルから JMS SAF クライアントのコンフィグレーション ファイルを生成するには、インストールした WebLogic に付属している ClientSAFGenerate
ユーティリティを使用します。
ClientSAFGenerate
ユーティリティは、ソース JMS のコンフィグレーション ファイルに記述されているすべての接続ファクトリ、スタンドアロンの送り先、および分散送り先のエントリを作成します (「JMS モジュールから JMS SAF クライアントのコンフィグレーション ファイルを生成するための手順」を参照)。生成されたファイルには、「JMS SAF クライアントの初期 JNDI プロバイダを使用できるように JMS クライアント アプリケーションを変更する」で説明する初期 JNDI コンテキストを通じて JMS SAF クライアントが直接対話する接続ファクトリとインポート済み送り先が定義されます。ただし、生成されたファイルには、外部の JMS 送り先やサーバサイドの JMS モジュールの SAF 送り先のエントリは含まれません。しかも、SAF エクスポート ポリシーが All
に設定された JMS 送り先のみが、ファイルに追加されます (送り先のデフォルト設定)。
JMS SAF クライアントの XML ファイルは、JMS モジュールの WebLogic Server weblogic-jmsmd.xsd
スキーマに準拠し、ルート要素 weblogic-client-jms
を持っています。weblogic-jmsmd.xsd
スキーマには、サーバサイドの WebLogic JMS SAF 機能に対応する最上位要素がいくつかあります。詳細については、「JMS SAF クライアントのコンフィグレーションでの有効な SAF 要素」を参照してください。
ファイルの最上位要素には、JMS SAF クライアントが直接対話する接続ファクトリとインポート済み送り先の要素が記述されています。SAF 送信エージェント、リモート SAF コンテキスト、および SAF エラー処理の要素には、SAF フォワーダの機能が記述されています。永続ストアの要素は、JMS SAF クライアント API と SAF フォワーダの両方で使用されます。
ClientSAFGenerate
ユーティリティを使用して、WebLogic ドメインの JMS モジュール コンフィグレーション ファイルから JMS SAF クライアントのコンフィグレーション ファイルを生成します。また、コンフィグレーション ファイルは既存の JMS SAF クライアントのコンフィグレーション ファイルから生成することもできます。詳細については、「ClientSAFGenerate ユーティリティの構文」を参照してください。
注意 : | クライアント マシン上で ClientSAFGenerate ユーティリティを実行して、既存の JMS SAF クライアントのコンフィグレーション ファイルからコンフィグレーション ファイルを生成する場合、シン JMS クライアントや JMS SAF クライアントではなく、CLASSPATH 内の wlfullclient.jar を使用する必要があります。詳細については、「JMS SAF クライアントの JAR ファイルをクライアント マシンにインストールする」を参照してください。 |
次の手順は、ClientSAFGenerate
ユーティリティを使用して、インストールした WebLogic Server に付属している examples-jms.xml モジュール ファイルから JMS SAF クライアントのコンフィグレーション ファイルを生成する方法を示しています。
c:\bea\wlserver_10.0\samples\domains\wl_server\config\jms
ClientSAFGenerate
ユーティリティを実行します。> java weblogic.jms.extensions.ClientSAFGenerate -url http://10.61.6.138:7001 -username weblogic -moduleFile examples-jms.xml -outputFile d:\temp\ClientSAF-jms.xml
表 6-1 に、有効な ClientSAFGenerate
の引数を示します。
SAFClient-jms.xml
というコンフィグレーション ファイルがカレント ディレクトリに作成されます。以下に、その主な内容の例を示します。<weblogic-client-jms xmlns="http://www.bea.com/ns/weblogic/100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<connection-factory name="exampleTrader">
<jndi-name>jms.connection.traderFactory</jndi-name>
<transaction-params>
<xa-connection-factory-enabled>false
</xa-connection-factory-enabled>
</transaction-params>
</connection-factory>
<saf-imported-destinations name="examples">
<saf-queue name="exampleQueue">
<remote-jndi-name>weblogic.examples.jms.exampleQueue
</remote-jndi-name>
<local-jndi-name>weblogic.examples.jms.exampleQueue
</local-jndi-name>
</saf-queue>
<saf-topic name="quotes">
<remote-jndi-name>quotes</remote-jndi-name>
<local-jndi-name>quotes</local-jndi-name>
</saf-topic>
</saf-imported-destinations>
<saf-remote-context name="RemoteContext0">
<saf-login-context>
<loginURL>t3://localhost:7001</loginURL>
<username>weblogic</username>
</saf-login-context>
</saf-remote-context>
</weblogic-client-jms>
ヒント : | クラスタまたはドメインにデプロイされた他の JMS モジュールからリモート SAF 接続ファクトリと送り先を追加するには、これらの JMS モジュールに対して ClientSAFGenerate ユーティリティを再実行します。その際、-outputFile パラメータに同じ JMS SAF コンフィグレーション ファイル名を指定します。詳細については、「ClientSAFGenerate ユーティリティの構文」を参照してください。 |
注意 : | デフォルトでは、JMS クライアントの現在の作業ディレクトリに ClientSAF.xml が作成されます。ただし、JMS クライアントに引数を渡すことによってファイル名を明示的に指定することもできます。詳細については、「JMS SAF クライアントの初期 JNDI プロバイダを使用できるように JMS クライアント アプリケーションを変更する」を参照してください。 |
weblogic.jms.extensions.ClientSAFGenerate ユーティリティは、JMS モジュール ファイルまたは既存の JMS SAF クライアントのコンフィグレーション ファイルを使用して、JMS SAF クライアントのコンフィグレーション ファイルを生成します。
java [ weblogic.jms.extensions.ClientSAFGenerate ]
[ -url server-url ]
[ -username name-of-user ]
[ -existingClientFile file-path ]
[ -moduleFile file-path ['@' plan-path ]]*
[ -outputFile file-path ]
weblogic-jmsmd.xsd
スキーマの weblogic-client-jms
ルート要素には、サーバサイドの WebLogic JMS SAF 機能に対応する最上位要素がいくつか含まれています。表 6-2 に、スキーマの最上位要素と対応する管理 MBean との関係を示します。
JMS SAF クライアントのデフォルト ストア オプション」を参照。
|
警告 : | JMS SAF クライアントのコンフィグレーション ファイルで指定できるのは、1 つの persistent-store および saf-agent 要素のみです。 |
これらの管理 MBean のすべてのプロパティは、JMS SAF クライアント実装でもサーバサイドの SAF JMS コンフィグレーションの場合と同じように機能します。ただし、次の表に示すものは除きます。
表 6-3 に、標準の SAFAgentMBean
フィールドと JMS SAF クライアントのコンフィグレーション ファイルのフィールドとの相違点を示します。
警告 : | JMS SAF クライアントのコンフィグレーション ファイルで指定できるのは、1 つの saf-agent 要素のみです。 |
表 6-4 に、標準の JMSConnectionFactoryBean
フィールドと JMS SAF クライアントのコンフィグレーション ファイルのフィールドとの相違点を示します。
表 6-5 に、標準の SAFImportedDestinationsBean
フィールドと JMS SAF クライアントのコンフィグレーション ファイルのフィールドとの相違点を示します。
各 JMS SAF クライアントは、コンフィグレーションを必要としないデフォルト ストアを持っており、このストアは複数の JMS SAF クライアントで共有できます。デフォルト ストアはファイル ベースのストアで、JMS SAF クライアントのコンフィグレーション ディレクトリ直下のファイル グループにデータを保持します。
persistent-store
要素を使用すると、デフォルト ストアに別の場所を指定でき、次の要素を JMS SAF クライアントのコンフィグレーション ファイルに指定することによって、デフォルトの書き込みポリシーを変更することもできます。
警告 : | JMS SAF クライアントのコンフィグレーション ファイルで指定できるのは、1 つの persistent-store 要素のみです。 |
次に、JMS SAF クライアントのコンフィグレーション ファイルにおけるカスタマイズされた JMS SAF クライアントのデフォルト ストアの例を示します。
<persistent-store>
<directory-path>config/jms/storesdom</directory-path>
<synchronous-write-policy>Disabled</synchronous-write-policy>
</persistent-store>
ファイル ストアの同期書き込みポリシーの使用に関する詳細については、『WebLogic Server 環境のコンフィグレーション』の「WebLogic 永続ストアの使い方」を参照してください。
生成された SAF コンフィグレーション ファイルには、ソース JMS モジュール ファイルにコンフィグレーションされているかどうかに関係なく、暗号化された SAF リモート コンテキストのパスワードが含まれていません。JMS SAF クライアントのコンフィグレーション ファイルで定義されるリモートのクラスタまたはサーバのコンテキストに対しセキュリティ資格がコンフィグレーションされる場合、リモートのサーバまたはクラスタに接続する際に、暗号化されたパスワードが必要になります。
暗号化されたリモート SAF コンテキストのパスワードを作成するには、インストールした WebLogic に付属している ClientSAFEncrypt
ユーティリティを使用する必要があります。このユーティリティを使用すると、クリアテキストの文字列を JMS SAF クライアント用に暗号化することができます。
注意 : | 既存の weblogic.security.Encrypt コマンドライン ユーティリティは、ドメイン セキュリティ ファイルへのアクセスが想定されるため、クライアントでは使用できません。 |
以下に、ClientSAFEncrypt
を使用して暗号化されたパスワードを生成する手順を示します。
ClientSAFEncrypt
ユーティリティを実行します。> java -Dweblogic.management.allowPasswordEcho=true weblogic.jms.extensions.ClientSAFEncrypt [ key-password ] [ remote-password ]*
key-password
フィールドまたは remote-password
フィールドが指定されていない場合は、key-password
と remote-password
を指定するよう対話形式で求められます。Password Key ("quit" to end):
Password ("quit" to end):
<password-encrypted>{Algorithm}PBEWithMD5AndDES{Salt}9IsTPAuZdcQ={Data}d6SSPp3GwPAfEXn8izyZA0IRCV/izT8H</password-encrypted>
Password ("quit" to end):
<saf-remote-context name="RemoteContext0">
<saf-login-context>
<loginURL>http://10.61.6.138:7001</loginURL>
<username>weblogic</username>
<password-encrypted>{Algorithm}PBEWithMD5AndDES{Salt}dWENfrgXh8U={Data}u8xZ968dElHckso/ZYm2LQ6xVNBPpBGQ</password-encrypted>
</saf-login-context>
</saf-remote-context>
JMS SAF クライアントのコンフィグレーション ファイルに定義されているリモート コンテキストで必要になるすべてのパスワードに対して、同じ key-password
を指定して ClientSAFEncrypt
ユーティリティを使用します。クライアントが JMS SAF クライアントの使用を開始する際、ClientSAFEncrypt
ユーティリティに指定した同じ key-password
を使用する必要があります。
quit
と入力して、ClientSAFEncrypt
ユーティリティを終了します。
weblogic.jms.extensions.ClientSAFEncrypt ユーティリティは、クリアテキストの文字列を JMS SAF クライアント用に暗号化して、リモート SAF コンテキストにアクセスできるようにします。
java [ -Dweblogic.management.allowPasswordEcho=true ]
weblogic.jms.extensions.ClientSAFEncrypt [key-password
]
weblogic.jms.extensions.ClientSAFEncrypt [remote-password
]
JMS SAF クライアントのインストール方法は、クライアント マシンで、小さい JAR
ファイル (シン クライアント) を必要とするのか、必要な機能をすべて含み推奨ベスト プラクティスである、高パフォーマンスで単一の wlfullclient.jar
ファイルを使用できるのかによって異なります。
必要な WebLogic JAR
ファイルは、WebLogic Server インストール ディレクトリの WL_HOME
\server\lib
サブディレクトリにあります。WL_HOME
は、インストールした WebLogic 製品全体の最上位インストール ディレクトリ (たとえば c:\bea\weblogic92\server\lib
) です。
シン クライアント用に小さいサイズの JAR
ファイルが必要な場合は、次の JAR
ファイルをクライアント マシンのファイル システム上のディレクトリに配置し、CLASSPATH
に追加する必要があります。
wljmsclient.jar
は wlclient.jar
を参照するので、CLASSPATH
にはどちらか一方の JAR
を指定するだけでかまいません。
同様に、推奨ベスト プラクティスとして高パフォーマンスでサイズの大きな wlfullclient.jar
を使用する場合も、この JAR ファイルをクライアント マシンのファイル システム上のディレクトリに配置し、CLASSPATH
に追加する必要があります。また、wlfullclient.jar
ファイルを使用すると、クライアント マシンで ClientSAFGenerate
ユーティリティを実行して、既存の JMS SAF クライアントのコンフィグレーション ファイルからコンフィグレーション ファイルを生成することができます。詳細については、「JMS モジュールから JMS SAF クライアントのコンフィグレーション ファイルを生成するための手順」を参照してください。
シン クライアントの開発の詳細については、「Java EE アプリケーション クライアント (シン クライアント) の開発」を参照してください。
JMS SAF クライアントには、「JMS モジュールから JMS SAF クライアントのコンフィグレーション ファイルを生成するための手順」で生成した JMS SAF クライアントのコンフィグレーション ファイルに指定されたサーバサイドの JMS 接続ファクトリと送り先をルックアップするために、初期 JNDI プロバイダが必要になります。
JMS クライアント アプリケーションを変更して、標準のサーバ初期コンテキストの代わりに JMS SAF クライアントの JNDI コンテキスト ファクトリを使用するようにします。JMS SAF クライアントの JNDI プロパティ java.naming.factory.initial
に使用する名前は、weblogic.jms.safclient.jndi.InitialContextFactoryImpl
です。
JMS SAF クライアント アプリケーションの JNDI 初期コンテキスト ファクトリの例は、次のようになります。
public final static String JNDI_FACTORY="weblogic.jms.safclient.jndi.InitialContextFactoryImpl";
標準の JNDI ルックアップを使用して、JMS SAF クライアントは自動的に起動され、コンフィグレーション ファイルに指定されたサーバサイドの JMS 接続ファクトリと送り先をルックアップします。デフォルトでは、JMS クライアントの現在の作業ディレクトリに ClientSAF.xml
というコンフィグレーション ファイルが作成されます。ただし、JMS クライアントに引数を渡すことによってコンフィグレーション ファイルの名前を明示的に指定することもできます。
JMS SAF クライアントで作成された初期コンテキストから返される項目は、サードパーティの JMS プロバイダからの JMS 呼び出しでは処理できません。また、JMS SAF クライアントの初期コンテキストとサーバの初期コンテキストを混在させることはできません。詳細については、「JMS SAF クライアントのコンテキストとサーバのコンテキストは混在できない」を参照してください。
また、JMS クライアント アプリケーションを更新して weblogic.jms.extensions.ClientSAF
拡張クラスを使用可能にすることができます。これによって、JMS クライアントが JMS SAF クライアント システムの使用を制御することができるようになります。詳細については、「JMS SAF クライアントの初期化 API」を参照してください。
次のような 2 つの任意指定の JMS SAF クライアントの JNDI プロパティがあります。
ローカル JNDI プロバイダでは、lookup(String)
API および close()
API しかサポートされていません。その他の API ではすべて、機能がサポートされていない旨の例外が送出されます。
次の管理機能は、JMS SAF クライアント実装で使用できます。
weblogic.jms.extensions.ClientSAF
拡張クラスを使用すると、JMS クライアントが JMS SAF クライアント システムの使用を制御することができるようになります。JMS クライアントではこの拡張メカニズムを使用する必要はありませんが、これを使用すると、JMS SAF クライアント システムをきめ細かく制御することができます。たとえば、close()
メソッドを使用すると、JMS クライアントがメッセージを転送しないようにすることができます。
JMS SAF クライアントには、JMS SAF クライアントが使用するデフォルトのファイル ストアを管理するユーティリティが用意されています。サーバサイドの WebLogic ストア ユーティリティと同様に、JMS SAF クライアント ストアのトラブルシューティングを行ったり、データを抽出したりできます。このユーティリティは、Java コマンドラインからでも WebLogic Scripting Tool (WLST) からでも実行することができます。ストア ユーティリティで操作できるのは、実行中の JMS SAF クライアントが現在開いていないストアのみです。
ストア管理の最も一般的な使用例は、サイズを減らすためにファイル ストアを圧縮する場合や、トラブルシューティングを目的としてファイル ストアの内容を XML ファイルにダンプする場合です。詳細については、『WebLogic Server 環境のコンフィグレーション』の「永続ストアの管理」を参照してください。
JMS SAF クライアントを使用する場合、次の JMS プログラミングの考慮事項が適用されます。
一般的に、JMS アプリケーションは JMSReplyTo
ヘッダ フィールドを使用して、一時的な送り先の名前を他のアプリケーションに対して公開できます。ただし、サーバサイドの JMS SAF インポート済み送り先の場合と同様に、JMSReplyTo
フィールドを持つ一時的な送り先の使用は JMS SAF クライアントでサポートされていません。
JMS 一時送り先の使用方法の詳細については、『WebLogic JMS プログラマーズ ガイド』の「一時的な送り先の使い方」を参照してください。
JMS SAF クライアントのネーミング コンテキストから返される項目をサーバの初期コンテキストから返される項目と一緒に使用すると、JMS API が失敗し、その旨の例外メッセージが表示されます。同様に、サーバの初期コンテキストから返される項目を JMS SAF クライアントのネーミング コンテキストから返される項目と一緒に使用すると、JMS API が失敗し、その旨の例外メッセージが表示されます。
JMS SAF クライアントでのトランザクション セッションはサポートされていますが、クライアント SAF 操作は、グローバル (XA) トランザクションへ一切参加しません。XA トランザクションがある場合、メッセージ送信処理は XA トランザクションの外部で行われ、例外は送出されません。
相互運用のガイドラインは、JMS SAF クライアントを使用してサーバサイドの WebLogic JMS にメッセージを転送する場合に適用されます。
各クライアント マシンには、J2SE 1.4 以降のランタイムがインストールされている必要があります。
WebLogic の JMS SAF クライアント システムは、WebLogic Server 9.2 以降でのみ機能します。
クライアントサイドの WebLogic JMS SAF クライアント コードは、リリース 9.2 以降の WebLogic Server JAR
ファイルで実行される必要があります。WebLogic Server JAR
ファイルのインストールの詳細については、「JMS SAF クライアントの JAR ファイルをクライアント マシンにインストールする」を参照してください。
JMS SAF クライアントでは、サーバサイドの SAF サービスで使用可能なパラメータのチューニングを利用することができます。詳細については、『WebLogic Server パフォーマンス チューニング ガイド』の「WebLogic JMS ストア アンド フォワードのチューニング」を参照してください。
JMS SAF クライアントでは、「JMS SAF クライアントのコンフィグレーションでの有効な SAF 要素」で説明したフィールド レベルの制限のほか、次の制限も適用されます。
persistent-store
および saf-agent
要素のみ。
![]() ![]() ![]() |