9.4.4 定義するデータ形式
- 〈この項の構成〉
(1) XIDの形式
HMP-PCTOでは、トランザクションを一意に識別する情報としてXIDを使用します。XIDをコンポーネント間で引き渡して、トランザクションの制御をします。
XIDの構造は、javax.transaction.xaインタフェースで定義された構造(X/Openトランザクション識別子XID構造のJavaマッピング)とします。XIDの構造と内容を次の表に示します。
|
名称 |
説明 |
|---|---|
|
GlobalTransactionId (グローバルトランザクション識別子) |
トランザクションザクションを一意に識別するためのID。 |
|
FormatId (形式識別子/フォーマットID) |
XIDの形式を示す数値。 現時点のHMP-PCTOではフォーマットID=1の一形式。 将来的に、HMP-PCTOのバージョン、使用する機能などによって形式が変わる場合は、この値で形式を区別します。 |
|
BranchQualifier (トランザクションブランチ識別子) |
トランザクションブランチを一意に識別するためのID。 |
(2) フォーマットID=1のXID形式
(a) GlobalTransactionId
64バイトのbyte配列です。内容を次に示します。
|
名称 |
オフセット(単位:バイト) |
長さ(単位:バイト) |
説明 |
|---|---|---|---|
|
UUID (ユニバーサル固有識別子) |
0 |
16 |
UUIDをbyte配列に変換した値です。Javaの標準クラスでタイプ4(擬似ランダム生成)UUIDを生成して格納します。 BIG ENDIANです。 |
|
MediatorNumbersMap (Mediator番号) |
16 |
8 |
トランザクションに参加するMediatorの番号に対応するビットマップです。 次のようにマッピングします。
BIG ENDIANです。 |
|
consensusType (分散合意種別) |
24 |
1 |
Orchestratorのパラメタjp.co.Hitachi.soft.hmppcto.learner.consensus-typeの設定値に対応した1バイトの文字です。
|
|
filler (空き領域) |
25 |
7 |
未使用領域です。 「’/’」で埋めます。 |
|
instanceId (インスタンス識別子) |
32 |
32 |
どのOrchestratorのトランザクションか判断するための識別子です。 Orchestratorのパラメタjp.co.Hitachi.soft.hmppcto.instance-id設定値をbyte配列に変換した値です。 設定値が32バイト未満の場合は、「’/’」で埋めます。 |
(b) FormatId
int型の1です。
(c) BranchQualifier
32バイトのbyte配列です。
Entity-ServiceもしくはEntity-Moduleを呼び出すOrchestrator、またはEntity-ServiceもしくはEntity-Moduleのパラメタjp.co.Hitachi.soft.hmppcto.branch.qualifier.listに設定した識別子をbyte[]に変換した値です。設定値が32バイト未満の場合は、「#」で埋めます。
ルートXIDの場合、BranchQualifierは意味はありません。0x00(1バイト)が設定されますが、使用されません。