第16章 はじめに

JBoss Transaction Service のXML Transaction Service (XTS) コンポーネントは、ビジネストランザクションにおいてプライベートとパブリックのWeb Services をコーディネートするサポートをします。そのため、XTS を理解するには、まずWeb Services を熟知し、トランザクションについても理解する必要があります。本章では、XTSを説明し、Web Services 規格を形成する技術について簡単に説明していきます。さらに、本章ではトランザクション技術の基本について一部みていき、さらにWeb Services に応用する方法を説明します。本章で提供している内容は、本書全体で詳しく説明していますが、Web Services については概要情報のみを提供しています。Web Services 作成に詳しくない場合は、ご利用中のWeb Services プラットフォームに関する文書を参照してください。
JBoss Transaction ServiceはWeb Services 向けのトランザクションソリューションとしてXTS コンポーネントを提供しています。ビジネスパートナーはXTS を使うことで複雑なビジネストランザクションを制御かつ信頼できるかたちでコーディネートすることができます。XTS API はWS-CoordinationWS-Atomic TransactionWS-Business Activity 仕様に基づき、トラザクショナルなコーディネーションモデルに対応しています。

XTS に含まれるプロトコル

  • WS-Coordination (WS-C) はIBM、Microsoft、BEA により開発された一般的なコーディネーションフレームワークです。
  • WS-Atomic Transaction (WS-AT) とWS-Business Activity (WS-BA) には、このフレームワークを使うWS-Transaction (WS-T) のトランザクションプロトコルが含まれます。
JBoss Transaction Service は、これら3つの仕様のバージョン1.0、1.1、1.2を実装し、バージョン仕様についてはhttp://www.oasis-open.org/specs/から入手できます。

注記

1.0、1.1、1.2仕様は、それぞれ少しずつ違っています。本書の他の部分は、コード例と説明を提供しているところではこれらの仕様のバージョン1.1を使っています。1.1仕様に適用する必要のある修正が明確でない場合は、注釈が提供されています。
Web Services はモジュラー形式で再利用可能なソフトウェアコンポーネントで、Web サービスインターフェースを使い公開ビジネス機能により作成されています。Web Services は、SOAPやHTTPなどの規格ベースの技術を使い他のWeb Services と直接通信します。これらの規格ベースの通信技術により、ハードウェアのオペレーティングシステムやプログラミング環境に依存せずに顧客、サプライヤ、取引相手がWeb Servicees にアクセスできるようになります。結果、現在のEDIやbusiness-to-business (B2B) ソリューションと比較すると連携環境が大幅に改善されており、ビジネスが今後のビジネスアプリケーションを外部のパートナーが簡単に見つけ、アクセスできるようなWeb Services として公開することができる環境となっています。
Web Services だけでは耐障害性に優れているとは言えません。実はWeb Services モデルが魅力的な開発ソリューションである理由の中で、サービスベースのアプリケーションの欠点となっているものもあります。

Web Services のプロパティ

  • Web Services として公開されているアプリケーションコンポーネントはサードパーティにより所有されている場合があり、保守コストの面で利点がありますが、その動作に排他的な制御があるかという面では欠点となってしまいます。
  • Web Servcies は通常リモートに置かれており、呼出し時のネットワーク利用が増えるため、障害リスクが増えてしまいます。
依存要件の高いアプリケーションは、アプリケーションがWeb Services を消費する際に発生するエラーからの影響を最低限に抑える方法が必要になります。このような障害から守る方法には、トランザクションのコンテキスト内でアプリケーションのWeb Servcies とやりとりを行うことが挙げられます。トランザクションは最後まで完了させるという作業単位、あるいは障害時に事前の同意した矛盾のないステートへ戻すといった作業の単位です。通常障害時の目的は、このような作業がもともと発生していないかのように見せることです。XTS では、トランザクションは複数のWeb Services に渡り発生しているため、複数のエンタープライズで実施した作業はトランザクショナルサポートで管理されることがあります。

16.1. サービスベース処理の管理

XTS では、複数のWeb Servcies 間にわたる複雑なビジネス処理を行うトランザクションを作成することができます。現在のWeb Services 規格は、ハイレベルのサービスコーディネーション要件には対応していません。これは、1つの request/receive インターラクションを使う現在のWeb Services アプリケーションでは通常、コーディネーションは問題にはなりません。しかし、複数のビジネスパートナーの間で複数のサービスに携わるアプリケーションにとっては、得られたインターラクションのコーディネートや管理は必須となっています。サードパーティのWeb Services とやりとりを行う際に通常、正式な保証の方法がほとんどない点に気づくと、この点はさらに明確になってきます。
XTS は業務プロセス中のサービスをコーディネートするインフラストラクチャを提供しています。トランザクションとしてプロセスを整理することで、ビジネスパートナーは複雑なビジネスインターラクションでも信頼できるかたちで連携することができます。結果、通常1つのデータベースに複数の変更が加えられるような環境で、従来のトランザクション処理エンジンをWeb に直接公開する際のオーバーヘッドや問題なしにデータの整合性を保ちます。An Evening On the Town では、アプリケーションがサービスベースのプロセスをトランザクションとして管理する方法を説明しています。
An Evening On the Town

このアプリケーションではユーザが夜の外出を計画できるようになっており、レストランの予約、ショーのチケット予約などを行います。これらのアクティビティはクレジットカードで支払いをします。この例では、各サービスは別のサービスプロバイダーにより提供された公開Web Servcies を表していますが、XTSを使うことで劇場とレストランサービス間とのやりとりを長期にわたる (場合によっては) ビジネストランザクション1つにまとめます。1つのイベントに問題があれば、ユーザはイベント両方を却下できるようになっているため、両サービスを元のステートに戻します。量イベントが問題なく行われると、ユーザのクレジットカードに課金され、レストラン、ショー両方が予約されます。ご存じのように、両サービス間のやりとりを長期にわたり信頼できるかたちで管理する必要があります。さらに、リモートでデプロイされている複数のサードパーティサービスをすべて管理する必要があります。

トランザクションのバックアップがないと、望まない結果に陥ってしまう可能性があります。例えば、どちらか、あるいは両方の予約に問題があっても、クレジットカードに課金されてしまうなどです。
An Evening On the Town は、XTS が複数の企業間にわたるビジネスプロセス対応に長けている状況について説明しています。本書全体でこの例について詳しくみていき、XTS ディストリビューションの標準例 (ソースコードも含む) として表示します。