JMSInput ノードへのメッセージを提供する、または JMSOutput からのメッセージを受信する JMS 宛先は、 メッセージ・フロー・グローバル・トランザクションの一部として同期点調整されたものとすることができます。
以下の図で、メッセージは JMSInput ノードによりトピックから消費され、JMSOutput ノードにより JMS キューに生成されます。 ノードは JMS プロバイダーに接続され、同じセッションに入れられます。 任意のメッセージ・フロー入力ノードは外部同期点コーディネーターに、メッセージ・フロー・トランザクションがいつ開始および終了するか、そしてフローが接触したリソースをコミットするか、またはロールバックするかを知らせます。
IMAGE HERE
同期点コーディネーターは、XA/Open 準拠要求を、 参加するすべてのリソース・マネージャーに送り、準備するようにと伝えます。 その後、変更があればコミットまたはロールバックされます。 WebSphere MQ、DB2、および XA 準拠の JMS プロバイダーなどのリソース・マネージャーは、 グローバル・トランザクションに参加できます。 外部同期点コーディネーターは、分散プラットフォーム上の WebSphere MQ、 および z/OS 上の RRS (リソース・リカバリー・サービス) です。
JMSInput ノードおよび JMSOutput ノードは、グローバル・トランザクションに参加できますが、 接続する JMS プロバイダーが JMS XAResource クラスを介して XA/Open インターフェースをサポートする場合だけです。 JMS プロバイダーの例としては、WebSphere MQ Java Client があります。
ブローカーの WebSphere MQ キュー・マネージャーが始動する際に、 初期リカバリー・ステップが実施されて、ブローカー・メッセージ・フローが新規入力の処理を開始する前に 未確定トランザクションが必ず解決されるようにします。 未確定トランザクションは、リソース・マネージャーがリソースのコミットまたはロールバックを 要求する同期点マネージャーからの呼び出しに応答しない場合に生じます。 ブローカー・グローバル・トランザクションに参加する JMS プロバイダーは、 ブローカーのキュー・マネージャーが始動する際のこのリカバリー・ステップに含まれます。
スイッチ・ファイルは XA/Open トランザクション呼び出しを同期点コーディネーターから JMS プロバイダーに転送します。 これにより、トランザクションに参加する JMS リソースを、同じトランザクションに含まれる他のリソース・マネージャーと同期調整できます。
XAResourceManager: Name=WBIWMQJMS SwitchFile=/<Installation Path>/lib/JMSSwitch.so XAOpenString=<Initial Context Factory>, <location of JNDI bindings>, <LDAP Principal>, <LDAP Credentials>, <Recovery Connection Factory Name> ThreadOfControl=THREADここで、
<Installation Path> は、WebSphere Broker インストール済み環境のロケーションです。 この値は必須です。XAOpenString には、コンマで区切られた定位置の値が指定されます。 指定しないオプション・パラメーターは、他のパラメーターをストリングの後方に指定する場合には、コンマで表す必要があります。
<Initial Context> は、JMS プロバイダーの初期コンテキスト・ファクトリーの ID です。 この値は必須です。
<Location of> は、.bindings ファイルへのファイル・パス (ファイル名そのものは含まない)、 または JMS 接続の初期コンテキスト・ファクトリーを作成するために 使用できる JNDI 管理対象オブジェクトの LDAP ディレクトリー・ロケーションのどちらかです。 JNDI 管理対象オブジェクトの作成方法について詳しくは、JMSInput または JMSOutput ノードを参照してください。 この値は必須です。
<LDAP Principal> JNDI 管理対象オブジェクトの保持に LDAP データベースが使用されるときに必要になるプリンシパル (ユーザー ID) を指定する、オプション・パラメーター。
<LDAP Credentials> JNDI 管理対象オブジェクトの保持に、パスワードで保護された LDAP データベースが使用されるときに必要になる信任状 (パスワード) を指定する、オプション・パラメーター。
<Recovery Factory> 非デフォルト名が必要とされるときに、リカバリー目的で JNDI 管理対象オブジェクト内の「キュー接続ファクトリー」オブジェクトの名前を指定するために使用する、オプション・パラメーター。
使用したい JMS プロバイダーごとに、ブローカーキュー・マネージャーの“.ini”ファイルにスタンザを指定する必要があります。 つまり、そのブローカーで実行中のメッセージ・フローに含まれる JMSInput または JMSOutput ノードによって指定可能な新規の JMS プロバイダーごとに、1 つのスタンザが必要となります。
初期コンテキスト・ファクトリーの値とスタンザ内での JNDI バインディングのロケーションは、 メッセージ・フロー内の JMSInput または JMSOutput ノードに指定されたものと一致しなければなりません。
同様に、LDAP パラメーターは、そのブローカーの mqsicreatebroker または mqsichangebroker コマンドを使用して指定されたパラメーターと一致しなければなりません。
リカバリー・ファクトリー名は、JNDI 管理対象オブジェクト内に作成された「キュー接続ファクトリー」と一致しなければなりません。 省略された場合、"recoveryQCF" と呼ばれるデフォルトのファクトリーが使用されます。 どちらの場合も、この値は事前に作成された JNDI 管理対象オブジェクトでなければなりません。 たとえば、以下のようになります。
XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory, /u/myJndiFileLocation, , , myRecoveryQCFNameLDAP パラメーターは省略されていますが、ユーザー定義の「キュー接続ファクトリー」がリカバリー用に指定されています。
同じ情報が必要となりますが、 レジストリーに詳細情報を追加するために WebSphere MQ Services スナップインを使用して構成されます。 この場合、スイッチ・ファイルは JMSSwitch.dll と呼ばれます。 qm.ini ファイルの更新方法について詳しくは、「WebSphere MQ System Administration Guide」を参照してください。 この場合、XACloseString と呼ばれる追加の「スタンザ」項目は、XAOPenString に指定された値と 一致する必要があります。
WebSphere Message Broker で、 現在サポートされている JMS プロバイダーは IBM WebSphere MQ Java Client だけです。 現在サポートされているトランスポート・モードは、BIND モードだけです。 これ以上の構成ステップは不要です。
このインプリメンテーションでのデフォルトの JMS プロバイダーは、WebSphere MQ です。 ただし、トランザクション調整が必要な場合、JMS 1.1 規格に準拠して、 JMS セッションにより JMS XAResource API をサポートしていれば、任意の JMS プロバイダーを使用できます。
ただし、メッセージ設計者が XA に準拠しないプロバイダーだけを指定した場合、 非トランザクション・モードだけがサポートされます。 さらに、設計者はすべての JMSInput および JMSoutput ノードについて、 「拡張」プロパティーの「トランザクション・モード」を「いいえ」に設定する必要もあります。