Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Extension for .NET Framework 使用の手引


Trn

〈このページの構成〉

Trnの概要

名前空間

Hitachi.OpenTP1.Server

継承関係

System.Object
  +- Hitachi.OpenTP1.Server.Trn

説明

Trnクラスは,OpenTP1独自のトランザクション制御をするメソッドを提供します。

メソッドの一覧

名称

説明

Begin()

グローバルトランザクションを,このメソッドを呼び出したプロセスから開始します。

Commit()

グローバルトランザクションの正常終了(コミット)を,トランザクションを構成するトランザクションブランチ,トランザクションサービス,およびリソースマネジャに知らせます。

CommitChained()

トランザクションの同期点を取得します。グローバルトランザクションのルートトランザクションブランチとして,処理が正常に終了したこと(コミット)を,トランザクションを構成するトランザクションブランチのUAP,トランザクションサービス,およびリソースマネジャに知らせます。

GetInfo()

GetInfoメソッドを呼び出したUAPが,現在トランザクションとして起動しているかどうかを返します。

Rollback()

トランザクションをロールバックします。非連鎖モードでロールバックしたあとには,トランザクションは続けて開始しません。

RollbackChained()

トランザクションをロールバックします。RollbackChainedメソッドを呼び出したあとには,続けてトランザクションが開始します。

メソッドの詳細

Begin

説明

グローバルトランザクションを,このメソッドを呼び出したプロセスから開始します。

Beginメソッドを呼び出したプロセスは,グローバルトランザクションのルートトランザクションブランチになります。

Beginメソッドを呼び出したUAPは,実行環境の設定でトランザクション属性を指定しておいてください。また,すでにBeginメソッドを呼び出しているグローバルトランザクションの中では,どのトランザクションブランチからも再びBeginメソッドを呼び出せません。一つのグローバルトランザクション中で重複して呼び出した場合は例外が発生します。

宣言
【C#の場合】
public static void Begin(
);
【Visual Basicの場合】
Public Shared Sub Begin( _
)
【J#の場合】
public static void Begin(
);
パラメタ

なし

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    例外の内容が出力されます。

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCTRNER_PROTO

    Beginメソッドを不正なコンテキスト(例えば,すでにトランザクション内にいる)から呼び出しています。

    RpcクラスのOpenメソッドを呼び出していません。

    DCTRNER_RM

    リソースマネジャ(RM)でエラーが発生しました。

    トランザクションは開始できませんでした。

    DCTRNER_TM

    トランザクションサービスでエラーが起こったので,トランザクションは開始できませんでした。このエラーコードが戻った場合は,再びBeginメソッドを実行すると成功する可能性が高いので,再実行してください。

Commit

説明

グローバルトランザクションの正常終了(コミット)を,トランザクションを構成するトランザクションブランチ,トランザクションサービス,およびリソースマネジャに知らせます。

Commitメソッドが正常に終了したあとで,新しいグローバルトランザクションは開始しません。

グローバルトランザクションが複数のトランザクションブランチから構成されるとき(メソッドを呼び出したUAPだけでないとき)は,それぞれのトランザクションブランチの処理結果がコミットとならないかぎり,コミットされません。

Commitメソッドを呼び出せるのは,ルートトランザクションブランチ(トランザクションを開始したUAP)だけです。それ以外のUAPから呼び出した場合は,例外が発生します。

Commitメソッドを呼び出すプロセスは,このクラスリファレンスの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

Commitメソッドは,同期点処理が完了したときに,正常に終了,またはエラーリターンのどちらかで返ります。Commitメソッドを呼び出すサービスが正常に終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提となります。

宣言
【C#の場合】
public static void Commit(
);
【Visual Basicの場合】
Public Shared Sub Commit( _
)
【J#の場合】
public static void Commit(
);
パラメタ

なし

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    例外の内容が出力されます。

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCTRNER_HAZARD

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。プロセスはグローバルトランザクションの範囲外です。

    DCTRNER_HEURISTIC

    Commitメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合に返します。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。プロセスはグローバルトランザクションの範囲外です。

    DCTRNER_PROTO

    Commitメソッドを不正なコンテキスト(例えば,すでにトランザクション中にいない)で呼び出しています。

    トランザクションモードに対する影響はありません。

    RpcクラスのOpenメソッドを呼び出していません。

    DCTRNER_ROLLBACK

    現在のトランザクションは,コミットできないでロールバックしました。プロセスはトランザクションの範囲外です。

CommitChained

説明

トランザクションの同期点を取得します。グローバルトランザクションのルートトランザクションブランチとして,処理が正常に終了したこと(コミット)を,トランザクションを構成するトランザクションブランチのUAP,トランザクションサービス,およびリソースマネジャに知らせます。

CommitChainedメソッドが正常に終了すると,新しいグローバルトランザクションが開始され,メソッドを呼び出したプロセスはこのトランザクションの範囲内になります。しかし,このことは,このメソッドを呼び出したUAP以外のトランザクションモードに対しての指定を意味しません。

グローバルトランザクションが複数のトランザクションブランチから構成されるとき(メソッドを呼び出したUAPだけでないとき)は,それぞれのトランザクションブランチの処理結果がコミットとならないかぎりコミットされません。

CommitChainedメソッドを呼び出せるのはルートトランザクションブランチ(Beginメソッドを呼び出したUAP)だけです。それ以外のUAPから呼び出した場合は,例外が発生します。

CommitChainedメソッドを呼び出すプロセスは,このクラスリファレンスの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

CommitChainedメソッドは,同期点処理が完了したときに正常に終了,または例外応答のどちらかで返ります。CommitChainedメソッドが正常に終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが必要です。

宣言
【C#の場合】
public static void CommitChained(
);
【Visual Basicの場合】
Public Shared Sub CommitChained( _
)
【J#の場合】
public static void CommitChained(
);
パラメタ

なし

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    例外の内容が出力されます。

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCTRNER_HAZARD

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

    DCTRNER_HAZARD

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

    DCTRNER_HAZARD_NO_BEGIN

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_HEURISTIC

    CommitChainedメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンします。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

    DCTRNER_HEURISTIC_NO_BEGIN

    CommitChainedメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンされます。

    このエラーコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_NO_BEGIN

    コミット処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_PROTO

    CommitChainedメソッドを不正なコンテキスト(例えば,すでにトランザクション中にいない)で呼び出しています。

    トランザクションモードに対する影響はありません。

    RpcクラスのOpenメソッドを呼び出していません。

    DCTRNER_ROLLBACK

    現在のトランザクションは,コミットできないでロールバックしました。

    このエラーコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

GetInfo

説明

GetInfoメソッドを呼び出したUAPが,現在トランザクションとして起動しているかどうかを返します。

GetInfoメソッドを呼び出すプロセスは,このクラスリファレンスの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

GetInfoメソッドを呼び出すサービスが正常終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提です。

宣言
【C#の場合】
public static int GetInfo(
);
【Visual Basicの場合】
Public Shared Function GetInfo( _
) As Integer
【J#の場合】
public static int GetInfo(
);
パラメタ

なし

戻り値
  • 1

    GetInfoメソッドを呼び出したプロセスは,トランザクションとして起動しています。

  • 0

    GetInfoメソッドを呼び出したプロセスは,トランザクションとして起動していません。

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    例外の内容が出力されます。

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCTRNER_PROTO

    RpcクラスのOpenメソッドを呼び出していません。

注意事項

このAPIはUAPトレースを取得していません。

Rollback

説明

トランザクションをロールバックします。非連鎖モードでロールバックしたあとには,トランザクションは続けて開始しません。

Rollbackメソッドを呼び出すことで,トランザクションブランチ,トランザクションサービス,およびリソースマネジャにロールバックを知らせます。

Rollbackメソッドは,グローバルトランザクションのどのトランザクションブランチからでも呼び出せます。

ルートトランザクションブランチから呼び出した場合,Rollbackメソッドが正常終了したあとには,新しいトランザクションは開始しません。

ルートトランザクションブランチ以外から呼び出した場合は,そのトランザクションブランチをrollback_only状態にします。

この場合,ルートトランザクションブランチの同期点処理が完了するまで,Rollbackメソッドを呼び出したトランザクションブランチはトランザクションの範囲内です。

Rollbackメソッドを呼び出すプロセスは,このクラスリファレンスの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

Rollbackメソッドを呼び出すサービスが正常に終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提です。

宣言
【C#の場合】
public static void Rollback(
);
【Visual Basicの場合】
Public Shared Sub Rollback( _
)
【J#の場合】
public static void Rollback(
);
パラメタ

なし

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    例外の内容が出力されます。

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCTRNER_HAZARD

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあと,このプロセスはトランザクション下になく,グローバルトランザクションの範囲外です。

    DCTRNER_HAZARD_NO_BEGIN

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_HEURISTIC

    Rollbackメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合に返します。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあと,このプロセスはトランザクション下になく,グローバルトランザクションの範囲外です。

    DCTRNER_HEURISTIC_NO_BEGIN

    RollbackChainedメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンされます。

    このエラーコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_NO_BEGIN

    ロールバック処理は正常終了しましたが,新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_PROTO

    Rollbackメソッドを不正なコンテキスト(例えば,すでにトランザクション中にいない)で呼び出しています。

    トランザクションモードに対する影響はありません。

    RpcクラスのOpenメソッドを呼び出していません。

RollbackChained

説明

トランザクションをロールバックします。RollbackChainedメソッドを呼び出したあとには,続けてトランザクションが開始します。

RollbackChainedメソッドを呼び出すことで,ルートトランザクションブランチから,トランザクションブランチ,トランザクションサービス,およびリソースマネジャにロールバックを知らせます。

RollbackChainedメソッドが正常に終了すると,メソッドを呼び出したプロセスはロールバックしてリターンします。

そのあとで新しいグローバルトランザクションが開始します。

メソッドを呼び出したプロセスはこのトランザクションの範囲内です。

ただし,このメソッドを呼び出したUAP以外のトランザクションモードに対しての指定を意味しません。

RollbackChainedメソッドを呼び出せるのは,ルートトランザクションブランチ(Beginメソッドを呼び出したUAP)からだけです。

それ以外のUAPから呼び出した場合は,例外が発生します。

RollbackChainedメソッドを呼び出すプロセスは,このクラスリファレンスの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

RollbackChainedメソッドは,同期点処理が完了したときに,正常終了,または例外応答のどちらかで返ります。

RollbackChainedメソッドを呼び出すサービスが正常終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提です。

宣言
【C#の場合】
public static void RollbackChained(
);
【Visual Basicの場合】
Public Shared Sub RollbackChained( _
)
【J#の場合】
public static void RollbackChained(
);
パラメタ

なし

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    例外の内容が出力されます。

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCTRNER_HAZARD

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

    DCTRNER_HAZARD_NO_BEGIN

    グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

    このエラーコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_HEURISTIC

    RollbackChainedメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンします。

    このエラーコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

    このエラーコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

    DCTRNER_HEURISTIC_NO_BEGIN

    RollbackChainedメソッドを呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットし,あるトランザクションブランチはロールバックしました。

    このエラーコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンされます。

    このエラーコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_NO_BEGIN

    ロールバック処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。このエラーコードが返ったあと,このプロセスはトランザクション下にはありません。

    DCTRNER_PROTO

    RollbackChainedメソッドを不正なコンテキスト(例えば,すでにトランザクション中にいない)で呼び出しています。

    トランザクションモードに対する影響はありません。

    RpcクラスのOpenメソッドを呼び出していません。