JMS トランザクション特性

JMSInput ノードへのメッセージを提供する、または JMSOutput からのメッセージを受信する JMS 宛先は、 メッセージ・フロー・グローバル・トランザクションの一部として同期点調整されたものとすることができます。

同期点コーディネーターが関連するトランザクション

JMSInput ノードおよび JMSOutput ノードを経由するメッセージ・フロー (同期点コーディネーターを含む) を示す図。

この図で、メッセージは 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 プロバイダーは、このリカバリー・ステップに含まれます。

グローバル・トランザクション・サポートを使用可能にする構成

JMSInput および JMSOutput ノードのグローバル・トランザクション・サポートを使用可能にするには、 追加の構成が必要になります。以下のステップを完了している必要があります。
  1. 「メッセージ・フロー」プロパティーの「整合トランザクション」を「はい」に設定します。
  2. グローバル・トランザクションに参加する必要のある JMSInput または JMSOutput ノードごとに、 「拡張」プロパティーの「トランザクション・モード」を「グローバル」に設定します。
  3. キュー接続ファクトリーを作成し、デフォルト名 recoverXAQCF またはユーザー定義名を入力します。JNDI 管理対象オブジェクトの作成方法について詳しくは、JMSInput または JMSOutput ノードを参照してください。
  4. 分散プラットフォームでは、デプロイメントの前に WebSphere MQ 管理タスクが必要になります。このタスクは、ブローカー・コンポーネントをキュー・マネージャーに登録するために必要です。スイッチ・ファイルと呼ばれるコンポーネントは、共用ライブラリー (Windows 上の DLL) です。

    ブローカーの WebSphere MQ キュー・マネージャーが開始すると、スイッチ・ファイルをロードします。スイッチ・ファイルは XA/Open トランザクション呼び出しを同期点コーディネーターから JMS プロバイダーに転送します。これにより、トランザクションに参加する JMS リソースを、同じトランザクションに含まれる他のリソース・マネージャーと同期調整できます。

    タスクは、プラットフォームによって異なります。
    • Linux および UNIX
      JMSInput ノードによって使用できる、各 JMS プロバイダー用のブローカーのキュー・マネージャーの場合、qm.ini などの初期設定ファイルにスタンザ・エントリーを配置します。以下は、JMS プロバイダーとして WebSphere MQ Java を使用するときの、追加可能なスタンザ・エントリーの例です。
      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 インストール済み環境のロケーションです。 この値は必須です。

      XAOpenString のパラメーターは、コンマで区切られた定位置の値です。指定しないオプション・パラメーターは、他のパラメーターをストリングの後方に指定する場合には、コンマで表す必要があります。
      • <Initial Context Factory> これは、JMS プロバイダーの初期コンテキスト・ファクトリーの ID です。この値は必須です。
      • <Location of JNDI bindings> これは、バインディング・ファイルへのファイル・パス、 または JMS 接続の初期コンテキスト・ファクトリーを作成するために 使用できる JNDI 管理対象オブジェクトの LDAP ディレクトリー・ロケーションのどちらかです。バインディング・ファイルへのファイル・パスを入力するとき、ファイル名を含めないでください。JNDI 管理対象オブジェクトの作成方法について詳しくは、JMSInput または JMSOutput ノードを参照してください。 この値は必須です。
      • <LDAP Principal> これは、JNDI 管理対象オブジェクトの保持に LDAP データベースが使用されるとき、必要になるプリンシパル (ユーザー ID) を指定するために使用される、オプション・パラメーターです。
      • <LDAP Credentials> これは、JNDI 管理対象オブジェクトの保持に、パスワードで保護された LDAP データベースが使用されるとき、必要になる信任状 (パスワード) を指定するために使用される、オプション・パラメーターです。
      • <Recovery Connection Factory Name> これは、非デフォルト名が必要なときに、リカバリー目的で JNDI 管理対象オブジェクト内の「キュー接続ファクトリー」オブジェクトの名前を指定するために使用する、オプション・パラメーターです。

      使用する各 JMS プロバイダーに対して、ブローカー・キュー・マネージャー .ini ファイルにスタンザを指定する必要があります。つまり、そのブローカーで実行中のメッセージ・フローに含まれる JMSInput または JMSOutput ノードによって指定可能な新規の JMS プロバイダーごとに、1 つのスタンザが必要となります。

      初期コンテキスト・ファクトリーの値とスタンザ内での JNDI バインディングのロケーションは、 メッセージ・フロー内の JMSInput または JMSOutput ノードに指定されたものと一致しなければなりません。

      LDAP パラメーターは、mqsicreatebroker または mqsichangebroker コマンドを使用して指定されたパラメーターと一致しなければなりません。

      リカバリー・ファクトリー名は、JNDI 管理対象オブジェクト内に作成されたキュー接続ファクトリー名と一致しなければなりません。省略された場合、recoverXAQCF と呼ばれるデフォルトのファクトリーが使用されます。いずれの場合でも、この値は既に作成済みの JNDI 管理対象オブジェクトを参照する必要があります。

      以下は、スタンザの例です。

      XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory,
           /u/myJndiFileLocation,
           ,
           ,
           myRecoveryQCFName    
      LDAP パラメーターは省略されていますが、ユーザー定義の「キュー接続ファクトリー」がリカバリー用に指定されています。
    • Windows プラットフォームの場合

      Linux および Unix の場合と 同様に、Windows でも同じ情報が必要となりますが、 使用している WebSphere MQ のバージョンに応じて WebSphere MQ Explorer または WebSphere MQ サービス・スナップインを使用して 構成します。Windows の場合、スイッチ・ファイルは JMSSwitch.dll と呼ばれます。qm.ini ファイルの更新方法について詳しくは、「WebSphere MQ システム管理ガイド」を参照してください。XACloseString と呼ばれる追加の項目は、XAOpenString に指定された値と一致する必要があります。

    • z/OS の場合

      WebSphere Message Broker で、 現在サポートされている JMS プロバイダーは IBM WebSphere MQ Java Client だけです。 現在サポートされているトランスポート・モードは、BIND モードだけです。 これ以上の構成ステップは不要です。

    詳しくは、JMSInput ノードおよび JMSOutput ノードのトピックにある、整合トランザクションのための構成のセクションを参照してください。
  5. JMS プロバイダーは、トランザクション・サポートに必要な追加の jar ファイルを提供できます。 詳細については、JMS プロバイダーの資料を参照してください。 例えば、分散 (z/OS ではない) プラットフォームでは、WebSphere MQ JMS プロバイダーは追加の jar ファイル com.ibm,mqetclient.jar を提供しています。この jar は、ブローカーの shared_classes ディレクトリーにも追加する必要があります。 Windows の場合、このディレクトリーは C:¥Documents and Settings¥All Users¥Application Data¥IBM¥MQSI¥shared-classes です。 詳しくは、次のJMSInput ノードトピック内の、JMS プロバイダーのクライアントを JMS ノードで使用可能にするセクションを参照してください。

JMS プロバイダーの選択

トランザクション調整が必要な場合、Java Message Service Specification、バージョン 1.1 (Java Message Service Specification, version 1.1) に準拠して、JMS セッションにより JMS XAResource API をサポートしていれば、任意の JMS プロバイダーを使用できます。

ただし、メッセージ設計者が XA に準拠しないプロバイダーを指定した場合、 非トランザクション・モードだけがサポートされます。この場合、すべての JMSInput および JMSOutput ノードについて、「トランザクション・モード」プロパティーを「いいえ」に設定する必要があります。

関連資料
JMS メッセージ・タイプ
JMS メッセージ構造
JNDI 管理対象オブジェクト
JMSInput ノード
JMSOutput ノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac24879_