![]() |
![]() |
|
|
グローバル・トランザクションの例
電子商取引を行う小売店が、CUST_ORDER というサービスを使用するとします。顧客がその小売店の Web サイトで注文を行うと、CUST_ORDER サービスにより次の 2 つの操作が実行されます。
小売店側では、CUST_ORDER サービスを原子性の原則に従って実行する必要があります。つまり、CUST_ORDER が実行された場合、データベースの更新および出荷部門のキューへの要求の登録が両方とも成功しなければなりません。CUST_ORDER サービスが常に原子性に基づいて処理されるようにするため、CUST_ORDER を呼び出すクライアントは、要求をグローバル・トランザクションに関連付けます。
クライアントは、サービスをグローバル・トランザクションに関連付けるため、次の手順に従います。
操作は、1 つの作業単位で、グローバル・トランザクションの一環として実行されます。CUST_ORDER サービスが呼び出されると、サーバにクライアントのトランザクションが複製転送されます。その結果、発注データベースへのアクセスと、出荷用キューへの注文の登録は、クライアントのトランザクションの一部となります。
何らかの原因でどちらかの操作が失敗すると、システム・エラーまたはアプリケーション・エラーが発生し、トランザクションの作業は元に戻され (ロールバックされ) ます。つまり、トランザクションは初期状態に戻ります。
一方、2 つの操作が両方とも成功すると、クライアントはトランザクションをコミットします。つまり、トランザクションの結果を確定することを正式に通知します。これで、発注データベースへの更新は永続的となり、出荷部門に送信された注文は、その部門のキューに登録されます。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|