Resourceインタフェース

Resourceインタフェースのメソッドは、Resourceオブジェクトを登録してあるトランザクションが完了する時にWebOTX Transaction Service側から呼び出されます。

クラスorg.omg.CosTransactions.Resourceには次のメソッドがあります。

prepare プリペアを実施する
rollback ロールバックを実施する
commit コミットを実施する
commit_one_phase 1フェーズコミットを実施する
forget フォーゲットを実施する

   
prepare

名称 prepare - プリペアを実施する
形式
 package org.omg.CosTransactions;

 public interface Resource {
     public org.omg.CosTransactions.Vote prepare ();
 }
説明 このResourceオブジェクトに対して、2フェーズコミットプロトコルの第1フェーズ開始要求を出します。このメソッド内では、Vote結果として次に示すような値を返すように設計することが可能です。

このResourceオブジェクトに関連付けられた永続的なデータがトランザクションによって変更されない場合には、org.omg.CosTransactions.VoteReadOnlyを返すように設計するのが一般的です。WebOTX Transaction Service側でこの応答を受け取った場合は、このResourceオブジェクトに対してWebOTX Transaction Service側から要求を出すことはなくなります。そのため、このResourceオブジェクトが保持しているトランザクションについてのすべての情報をフォーゲットしても問題ありません。

このResourceオブジェクト内で、2フェーズコミットプロトコルの第1フェーズが正常に完了して、第2フェーズのコミットを実施する際に必要となるデータを安定したストレージに書き込むことが可能(あるいは、既に書かれている)な状態になった場合には、org.omg.CosTransactions.VoteCommitを返すように設計することのが一般的です。WebOTX Transaction Service側でこの応答を受け取った場合、このResourceオブジェクトに対してWebOTX Transaction Service側からorg.omg.CosTransactions.Resource.commit、あるいはorg.omg.CosTransactions.Resource.rollbackメソッドの実行要求が出されます。この際にWebOTX Transaction Service側から要求が来ないなどトランザクションの状態が疑わしくなった場合は、RecoveryCoordinatorオブジェクトを利用して回復処理を実施することもできます。そのためにResource側ではorg.omg.CosTransactions.Coordinator.register_resourceの戻りで取得したRecoveryCoordinatorオブジェクトリファレンスを永続的なデータとして保存しておくことで、より確実にトランザクションの回復処理を実施することが可能となります。

このResourceオブジェクト内で、2フェーズコミットプロトコルの第1フェーズが障害などのために正常に完了せず、第2フェーズのコミットを実施できない状態になった場合には、org.omg.CosTransactions.VoteRollbackを返すように設計するのが一般的です。WebOTX Transaction Service側でこの応答を受け取った場合は、このResourceオブジェクトが登録されているトランザクションは必ずロールバックされます。ただしWebOTX Transaction Serviceでは、これを返したResourceオブジェクトについては既にロールバック処理を実施したとみなしますので、rollbackメソッドは呼び出しません。注意してください。

またResourceオブジェクトは、org.omg.CosTransactions.HeuristicMixed例外、およびorg.omg.CosTransactions.HeuristicHazard例外を使用して、処理結果が矛盾したことを通知することも可能です。

戻り値 次の値を返却するようにメソッドを定義する必要があります。

org.omg.CosTransactions.VoteCommit 2フェーズ目にコミットを実施するように指示します。
org.omg.CosTransactions.VoteRollback ロールバックを実施するように指示します。
org.omg.CosTransactions.VoteReadOnly コミットあるいはロールバックを実施する必要がないことを通知します。
エラー CORBA標準例外を含む例外をthrowすることが可能です。CORBA標準例外以外の例外は次のものをthrowすることが可能です。これ以外のものはthrowしないでください。

org.omg.CosTransactions.HeuristicMixed prepare処理を実施した結果、コミットしたものとロールバックしたものが混在しています。
org.omg.CosTransactions.HeuristicHazard prepare処理を実施した結果、状態が不明になりました。
関連項目 ありません。

   
rollback

名称 rollback - ロールバックを実施する
形式
 package org.omg.CosTransactions;

 public interface Resource {
     public void rollback ();
 }
説明 このResourceオブジェクトが登録されたトランザクションの一部で実行されたすべての更新をロールバックします。ただしResourceオブジェクトが、このトランザクションに関する情報を既にフォーゲットしてしまっている場合は、ロールバック処理を実行してはいけません。

このメソッドの戻りとしてヒューリスティック例外を返すことが可能です。これを返した場合は、WebOTX Transaction Serviceからorg.omg.CosTransactions.Resource.forgetの実行要求がくるまでその状態を保持しておく必要があります。WebOTX Transaction Serviceではrollback処理のリトライを実施するケースがあるので、その時に同じ結果としてヒューリスティック例外をthrowする必要があります。
戻り値 ありません。
エラー CORBA標準例外を含む例外をthrowすることが可能です。CORBA標準例外以外の例外は次のものをthrowすることが可能です。これ以外のものはthrowしないでください。

org.omg.CosTransactions.HeuristicCommit rollback処理を実施した結果、コミットされました。
org.omg.CosTransactions.HeuristicMixed rollback処理を実施した結果、コミットされたものとロールバックされたものが混在しています。
org.omg.CosTransactions.HeuristicHazard rollback処理を実施した結果、状態が不明になりました。
関連項目 ありません。

   
commit

名称 commit - コミットを実施する
形式
 package org.omg.CosTransactions;

 public interface Resource {
     public void commit ();
 }
説明 このResourceオブジェクトが登録されたトランザクションの一部で実行されたすべての更新をコミットします。ただしResourceオブジェクトが、このトランザクションに関する情報を既にフォーゲットしてしまっている場合は、コミット処理を実行してはいけません。

このメソッドの戻りとしてヒューリスティック例外を返すことが可能ですが、これを返した場合は、WebOTX Transaction Serviceからorg.omg.CosTransactions.Resource.forgetの実行要求がくるまでその状態を保持しておく必要があります。WebOTX Transaction Serviceではcommit処理のリトライを実施するケースがあるので、その時に同じ結果としてヒューリスティック例外をthrowする必要があります。また、prepareが実施されていない場合にこのメソッドが呼び出された場合は、org.omg.CosTransactions.NotPrepared例外をthrowすることもできます。
戻り値 ありません。
エラー CORBA標準例外を含む例外をthrowすることが可能です。CORBA標準例外以外の例外は次のものをthrowすることが可能です。これ以外のものはthrowしないでください。

org.omg.CosTransactions.NotPrepared prepareが開始されていません。
org.omg.CosTransactions.HeuristicRollback commit処理を実施した結果、ロールバックされました。
org.omg.CosTransactions.HeuristicMixed commit処理を実施した結果、コミットされたものとロールバックされたものが混在しています。
org.omg.CosTransactions.HeuristicHazard commit処理を実施した結果、状態が不明になりました。
関連項目 ありません。

   
commit_one_phase

名称 commit_one_phase - 1フェーズコミットを実施する
形式
 package org.omg.CosTransactions;

 public interface Resource {
     public void commit_one_phase ();
 }
説明 このResourceオブジェクトが登録されたトランザクションの一部で実行されたすべての更新をコミットします。ただしコミットできない場合にはロールバック処理を実施し、CORBA.TRANSACTION_ROLLEDBACK例外をthrowします。

このメソッドは戻りとしてCosTransactions.HeuristicHazard例外をthrowすることが可能ですが、これを返した場合は、WebOTX Transaction Serviceからorg.omg.CosTransactions.Resource.forgetの実行要求がくるまでその状態を保持しておく必要があります。WebOTX Transaction Serviceではcommit_one_phase処理のリトライを実施するケースがあるので、その時に同じ結果としてこの例外をthrowする必要があります。
戻り値 ありません。
エラー CORBA標準例外を含む例外をthrowすることが可能です。CORBA標準例外以外の例外は次のものをthrowすることが可能です。これ以外のものはthrowしないでください。

org.omg.CosTransactions.HeuristicHazard commit_one_phase処理を実施した結果、状態が不明になりました。
関連項目 ありません。

   
forget

名称 forget - フォーゲットを実施する
形式
 package org.omg.CosTransactions;

 public interface Resource {
     public void forget ();
 }
説明 このResourceオブジェクトが登録されたトランザクションに関するすべての情報をフォーゲットします。ただしこのメソッドはResourceオブジェクトの中のrollbackcommit、あるいはcommit_one_phaseメソッドの戻りとしてヒューリスティック例外をthrowした場合に限り、実行することが可能となります。
戻り値 ありません。
エラー CORBA標準例外をthrowすることが可能です。CORBA標準例外以外のはthrowしないでください。
関連項目 ありません。