WebOTX Manual V11.1 (第6版) 目次を表示 |
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例外を使用して、処理結果が矛盾したことを通知することも可能です。
|
||||||
戻り値 | 次の値を返却するようにメソッドを定義する必要があります。
|
||||||
エラー | CORBA標準例外を含む例外をthrowすることが可能です。CORBA標準例外以外の例外は次のものをthrowすることが可能です。これ以外のものはthrowしないでください。
|
||||||
関連項目 | ありません。 |
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しないでください。
|
||||||
関連項目 | ありません。 |
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しないでください。
|
||||||||
関連項目 | ありません。 |
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しないでください。
|
||
関連項目 | ありません。 |
forget |
名称 | forget - フォーゲットを実施する |
形式 |
package org.omg.CosTransactions; public interface Resource { public void forget (); } |
説明 | このResourceオブジェクトが登録されたトランザクションに関するすべての情報をフォーゲットします。ただしこのメソッドはResourceオブジェクトの中のrollback、commit、あるいはcommit_one_phaseメソッドの戻りとしてヒューリスティック例外をthrowした場合に限り、実行することが可能となります。 |
戻り値 | ありません。 |
エラー | CORBA標準例外をthrowすることが可能です。CORBA標準例外以外のはthrowしないでください。 |
関連項目 | ありません。 |