第5章 Web Service Transaction のサービス管理

トランザクショナルなWeb Services アプリケーションに関する基本的なビルディングブロックは以下の通りです。
  • アプリケーション自体
  • アプリケーションが消費する Web services
  • Transaction Manager
  • これらの Web services をサポートするトランザクションのパーティシパント
通常のデプロイメントでは、開発者一人でこれらの役割をすべて対応する可能性は低くなっています。開発者は通常サービスやサービスを消費するアプリケーションを作りだし、システム管理者はトランザクション管理のインフラストラクチャを動かすため、概要を提示しています。

5.1. Transaction Manager

トランザクションマネージャは、JBoss Transaction Serviceのトランザクションを手配するWeb サービスで、エンドユーザコードに対応するのではなくネットワークサービスとして直接実行されるJBoss Transaction Serviceの中で唯一のソフトウェアコンポーネントとなっています。また、トランザクションマネージャは、JAXM リクエスト/レスポンスの Web サービスとして実行されます。

重要

JBoss Transaction Service をデプロイしているアプリケーションサーバーインスタンスを開始すると、端末あるいはログにて様々なエラーメッセージが表示されるでしょう。以下にメッセージの一例を示しています。
16:53:38,850 ERROR [STDERR] Message Listener Service: started, message listener jndi name activationcoordinator
このようなメッセージは情報提供を目的としており実際のエラーではありません。

5.1.1. Transaction Manager の設定

Transaction Managerと関連のインフラストラクチャはプロパティファイルを使って設定されます。
  • wscf.xml
  • wst.xml
  • wstx.xml
これらのファイルはconf にあり、デモアプリケーションやスタンドアローンモジュールを設定する際に使用します。
多くの場合、これらのファイルにあるデフォルト値を変更する必要はありません。ただし、com.arjuna.ats.arjuna.objectstore.objectStoreDirプロパティは、トランザクションの状態を記録するのに使用する永続ストアの場所を決定します。C:/temp/ObjectStoreのデフォルト値は、ご利用中のシステムに合わせて値を変更してください。本番環境では、このディレクトリはRAIDアレーなど、耐障害メディアに設置するようにしてください。
アプリケーションがスタンドアローンのコーディネータを使用する場合、wstx.xmlファイルのプロパティを2つ追加で有効化、修正する必要があります。
  • com.arjuna.mw.wst.coordinatorURL
  • com.arjuna.mw.wst.terminatorURL
これらのプロパティは、スタンドアローンのコーディネータと接触する際にクライアントアプリケーションが利用するURLを表示します。スタンドアローンコーディネータのホスト名とポートを正しく設定する必要があります。

注記

JBoss Transactin Service は極めてモジュラー型となっており、個別コンポーネントを柔軟にデプロイ可能にするには、複数の設定ファイルにて同じプロパティ値が必要となってくる場合もあります。設定の大半においては、複数のファイルにて定義されたプロパティに対して、一貫した値を保つ必要があります。

5.1.2. Transaction Manager のデプロイ

Transaction ServiceのWeb Service Transaction Manager コンポーネントには、アプリケーションのクラスファイルを含む多数のJARファイル、そして必要なサービスを公開するWeb サービス (WAR) ファイルから構成されています。アプリケーション開発時、プログラマはアプリケーションのEARファイルにあるこれらのコンポーネントを全てふくめ、トランザクションインフラストラクチャのデプロイメントを簡素化します。本番では、Transaction Manager をスタンドアローンのアプリケーションとしてインストールし、サーバーレベルで設定と管理を集約することができます。JBoss Transaction Serverに同梱されているデモのアプリケーションには、アプリケーションにTransaction Manager コンポーネントを含むサンプルの配備記述子が含まれています。
JBoss Transaction Service は、基盤となるプロトコル通信に固定のエンドポイントを使います。そのため、Transaction Serviceを利用する複数のアプリケーションが同じサーバーに同時にデプロイされると問題が発生する可能性があります。同じサーバーにトランザクショナルなアプリケーションを複数デプロイするには、個別アプリケーションのデプロイメント内に埋め込むのではなく、Transaction Manager を別のアプリケーションとしてデプロイします。
JBoss Transaction Service設定のcoordinator ディレクトリにより、スタントアローンのトランザクションマネージャを設定、デプロイメントしやすくなります。これを利用するには、以下が必須となります。
  • JBoss Enterprise Application Platform 5をインストールすること
  • ant 1.4 以降をインストールすること

重要

アプリケーションサーバーの設定はクライアントとサービスのデプロイ先とは違うものでなければなりません。そうでなければ、様々なJBoss Transaction Service コンポーネント間で矛盾が発生する可能性があります。
コーディネータに含まれているbuild.xmlを編集し、トランザクションコーディネータがデプロイされているアプリケーションサーバー設定と、JBoss Transaction Service 設定の場所を指定するようにします。コーディネータのdd/ ディレクトリにあるws-c_jaxm_web-app.xmlws-t_jaxm_web-app.xmlファイルは、WS-CおよびWS-T WARファイルの配備記述子となっています。これらのファイルにはテンプレート化されたURLが含まれています。構築フェーズで、ant は、build.xmlからのhostnameport値をこれらのファイルに代入します。
target deploy-weblogicdeploy-jboss あるいは deploy-webmethodsを使いantを実行し、正しいアプリケーションサーバー設定に新しいコーディネータを作成、デプロイします。
次に、デモアプリケーションを生成し、コーディネータのポートとホスト名を指定することで、必要とされるコーディネータにご利用中のクライアントを指定します。

5.1.3. 配備記述子

通常、JBoss Transaction Service で利用される様々な配備記述子のコンテンツを変更する必要はありません。しかし、変更の必要がある場合は、コーディネータモジュールにすべて含まれます。
JBoss Transaction Service コンポーネントのすべてが、配備記述子にある情報へアクセスする準備ができているわけではありません。そのため、WS-C あるいは WS-T 配備記述子が利用するJNDI名を変更すると、wstx.xml設定ファイルに適切なプロパティを設定することで、ランタイム時に他のJBoss Transaction Service コンポーネントに通知する必要がある場合もあります。
表5.1「配備記述子の値とプロパティ」の表にて、配備記述子が使うデフォルトのJNDI名とデフォルト値を変更する場合に設定する該当のプロパティが表示されています。

表5.1 配備記述子の値とプロパティ

JNDI 名 プロパティ
Activationrequester com.arjuna.mw.wst.at.activationrequester
Activationcoordinator com.arjuna.mw.wst.at.activationcoordinator
Completionparticipant com.arjuna.mw.wst.at.completionparticipant
Registrationrequester com.arjuna.mw.wst.at.registrationrequester
durable2pcdispatcher com.arjuna.mw.wst.at.durable2pcdispatcher
durable2pcparticipant com.arjuna.mw.wst.at.durable2pcparticipant
volatile2pcdispatcher com.arjuna.mw.wst.at.volatile2pcdispatcher
volatile2pcparticipant com.arjuna.mw.wst.at.volatile2pcparticipant
businessagreementwithparticipantcompletiondispatcher com.arjuna.mw.wst.ba.businessagreementwpcdispatcher
businessagreementwithparticipantcompletionparticipant com.arjuna.mw.wst.ba.businessagreementwpcparticipant
businessagreementwithcoordinatorcompletiondispatcher com.arjuna.mw.wst.ba.businessagreementwccdispatcher
businessagreementwithcoordinatorcompletionparticipant com.arjuna.mw.wst.ba.businessagreementwccparticipant