Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere でのプログラミングの概要 » 3 層コンピューティングと分散トランザクション » EAServer と SQL Anywhere の併用

 

コンポーネントのトランザクション属性の設定

EAServer では、2 つ以上のデータベース上で操作を実行するコンポーネントを実装できます。その場合、このコンポーネントに「トランザクション属性」を割り当てて、トランザクションとの関係を定義します。トランザクション属性には、次の値を指定できます。

  • Not Supported   コンポーネントのメソッドがトランザクションの一部として実行されることはありません。トランザクション内で実行中の別のコンポーネントによってコンポーネントがアクティブにされると、新しいインスタンスの作業は既存のトランザクションの外で実行されます。これはデフォルトです。

  • Supports Transaction   コンポーネントをトランザクションのコンテキストで実行できますが、コンポーネントのメソッドを実行するための接続は必要ありません。コンポーネントがベース・クライアントによって直接インスタンス化された場合、EAServer はトランザクションを開始しません。コンポーネント A がコンポーネント B によってインスタンス化され、コンポーネント B がトランザクション内で実行されている場合、コンポーネント A は同じトランザクション内で実行されます。

  • Requires Transaction   コンポーネントは常にトランザクションの中で実行されます。コンポーネントがベース・クライアントによって直接インスタンス化された場合、新しいトランザクションが開始されます。コンポーネント A がコンポーネント B によってアクティブにされ、B がトランザクション内で実行されている場合、A は同じトランザクション内で実行されます。B がトランザクション内で実行されていない場合、A は新しいトランザクション内で実行されます。

  • Requires New Transaction   コンポーネントがインスタンス化されると、新しいトランザクションが開始されます。コンポーネント A がコンポーネント B によってアクティブにされ、B がトランザクション内で実行されている場合、A は B のトランザクションの結果に影響されない新しいトランザクションを開始します。B がトランザクション内で実行されていない場合、A は新しいトランザクション内で実行されます。

たとえば、EAServer に SVU パッケージとして含まれている Sybase Virtual University サンプル・アプリケーションの中で、SVUEnrollment コンポーネントの enroll メソッドは、2 つの独立した操作 (講座の座席の予約、学生への受講費の請求) を実行します。これらの 2 つの操作は、1 つのトランザクションとして処理される必要があります。

Microsoft Transaction Server の場合も、Enterprise Application Server の場合と同様に、属性値のセットが提供されます。

♦  コンポーネントのトランザクション属性を設定するには、次の手順に従います。
  1. Jaguar Manager 内でコンポーネントを指定します。

    Jaguar サンプル・アプリケーションの SVUEnrollment コンポーネントを検索するには、Jaguar サーバに接続し、[Packages] フォルダを開いて、SVU パッケージを開きます。パッケージに含まれるコンポーネントが、右ウィンドウ枠にリストされます。

  2. コンポーネントのトランザクション属性を設定します。

    コンポーネントを右クリックし、[Component Properties] を選択します。[Transaction] タブをクリックし、リストからトランザクション属性を選択します。[OK] をクリックし、操作を完了します。

    SVUEnrollment コンポーネントには、すでに [Requires Transaction] のマークが付いています。

コンポーネントのトランザクション属性が設定されると、そのコンポーネントから SQL Anywhere のデータベース操作を実行できます。また、トランザクション処理が指定したレベルで行われることが保証されます。