JMSInput ノードへのメッセージを提供する、または JMSOutput からのメッセージを受信する JMS 宛先は、 メッセージ・フロー・グローバル・トランザクションの一部として同期点調整されたものとすることができます。
同期点コーディネーターが関連するトランザクション
この図で、メッセージは JMSInput ノードによりトピックから消費され、JMSOutput ノードにより JMS キューに生成されます。ノードは JMS プロバイダーに接続され、同じセッションに入れられます。 任意のメッセージ・フロー入力ノードは外部同期点コーディネーターに、メッセージ・フロー・トランザクションがいつ開始および終了するか、そしてフローが接触したリソースをコミットするか、またはロールバックするかを知らせることができます。
同期点コーディネーターは、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 プロバイダーは、このリカバリー・ステップに含まれます。
グローバル・トランザクション・サポートを使用可能にする構成
ブローカーの WebSphere MQ キュー・マネージャーが開始すると、スイッチ・ファイルをロードします。スイッチ・ファイルは 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 Message Broker インストール済み環境のロケーションです。 この値は必須です。
使用する各 JMS プロバイダーに対して、ブローカー・キュー・マネージャー .ini ファイルにスタンザを指定する必要があります。つまり、そのブローカーで実行中のメッセージ・フローに含まれる JMSInput または JMSOutput ノードによって指定可能な新規の JMS プロバイダーごとに、1 つのスタンザが必要となります。
初期コンテキスト・ファクトリーの値とスタンザ内での JNDI バインディングのロケーションは、 メッセージ・フロー内の JMSInput または JMSOutput ノードに指定されたものと一致しなければなりません。
LDAP パラメーターは、mqsicreatebroker または mqsichangebroker コマンドを使用して指定されたパラメーターと一致しなければなりません。
リカバリー・ファクトリー名は、JNDI 管理対象オブジェクト内に作成されたキュー接続ファクトリー名と一致しなければなりません。省略された場合、recoverXAQCF と呼ばれるデフォルトのファクトリーが使用されます。いずれの場合でも、この値は既に作成済みの JNDI 管理対象オブジェクトを参照する必要があります。
以下は、スタンザの例です。
XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory, /u/myJndiFileLocation, , , myRecoveryQCFNameLDAP パラメーターは省略されていますが、ユーザー定義の「キュー接続ファクトリー」がリカバリー用に指定されています。
Linux および Unix の場合と 同様に、Windows でも同じ情報が必要となりますが、 使用している WebSphere MQ のバージョンに応じて WebSphere MQ Explorer または WebSphere MQ サービス・スナップインを使用して 構成します。Windows の場合、スイッチ・ファイルは JMSSwitch.dll と呼ばれます。qm.ini ファイルの更新方法について詳しくは、「WebSphere MQ システム管理ガイド」を参照してください。XACloseString と呼ばれる追加の項目は、XAOpenString に指定された値と一致する必要があります。
WebSphere Message Broker で、 現在サポートされている JMS プロバイダーは IBM WebSphere MQ Java Client だけです。 現在サポートされているトランスポート・モードは、BIND モードだけです。 これ以上の構成ステップは不要です。
トランザクション調整が必要な場合、Java Message Service Specification、バージョン 1.1 (Java Message Service Specification, version 1.1) に準拠して、JMS セッションにより JMS XAResource API をサポートしていれば、任意の JMS プロバイダーを使用できます。
ただし、メッセージ設計者が XA に準拠しないプロバイダーを指定した場合、 非トランザクション・モードだけがサポートされます。この場合、すべての JMSInput および JMSOutput ノードについて、「トランザクション・モード」プロパティーを「いいえ」に設定する必要があります。