23.2.2. WS-BAパーティシパントのクラッシュリカバリAPI

23.2.2.1. パーティシパントのリカバリステートを保存

パーティシパントは、java.lang.Serializable インターフェースを実装することでリカバリ処理の実行ができるとのシグナルを送ることができます。あるいは例23.4「PersistableBAParticipant インターフェース」を実装します。

例23.4 PersistableBAParticipant インターフェース

public interface PersistableBAParticipant
{
    byte[] getRecoveryState() throws Exception;
}
パーティシパントがSerializableインターフェースを実装している場合、XTSパーティシパントサービス実装がシリアル化APIを使い、パーティシパントのログエントリに追記できるパーティシパントのバージョンを作成します。また、パーティシパントがPersistableBAParticipantを実装している場合、XTSパーティシパントサービスの実装はgetRecoveryStateメソッドを呼出しステートを取得し、パーティシパントのログエントリへ追記します。
APIのいずれかが実装されている場合、XTS実装は警告メッセージをログに残しリカバリのステートを保存することなく先に進みます。Web サービスのホストマシンがアクティビティの終了中にクラッシュした場合、アクティビティはリカバリできず、ヒューリスティックな結果がコーディネータのホストマシンにログで残されるでしょう。アクティビティがキャンセルされると、パーティシパントは補正されず、コーディネータのホストマシンは、アクティビティに関するヒューリスティックな結果をログに残すことがあります。