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

[目次][用語][索引][前へ][次へ]

Lck 【TP1/Server Base】

Lckの概要

名前空間

Hitachi.OpenTP1.Server

継承関係

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

説明

Lckクラスは,任意のユーザファイルを排他制御するメソッドを提供します。

Lckクラスのメソッドは,TP1/Server BaseのUAPでだけ使えます。TP1/LiNKのUAPでは,Lckクラスのメソッドは使えません。

メソッドの一覧

名称 説明
Get(System.String, System.Int32, System.Int32) UAPで使う資源の排他を指定します。
ReleaseAll() Getメソッドで指定した資源の排他をすべて解除します。
ReleaseByName(System.String) Getメソッドで指定した資源の排他を,資源名称を指定して解除します。

メソッドの詳細

Get

説明
UAPで使う資源の排他を指定します。排他の管理は,OpenTP1のトランザクションマネジャで管理するグローバルトランザクション単位で処理されます。
ここで指定した排他は,排他を解除するメソッド(Lck.ReleaseAllメソッド,Lck.ReleaseByNameメソッド)を呼び出すか,Getメソッドを呼び出したグローバルトランザクションの同期点取得後に解除されます。

宣言
【C#の場合】
public static void Get(
    string name,
    int lockMode,
    int flags
);
【Visual Basicの場合】
Public Shared Sub Get( _
    ByVal name As String, _
    ByVal lockMode As Integer, _
    ByVal flags As Integer _
)
【J#の場合】
public static void Get(
    System.String name,
    int lockMode,
    int flags
);

パラメタ
name
排他する資源の名称を,16文字の半角英数字文字列で設定します。ここで設定した資源名称を基に,ロックサービスで排他を管理します。16文字未満の場合は,設定した値がそのまま資源名称とみなされます。16文字を超えた値を設定した場合は,16文字までが資源名称とみなされ,超えた部分は切り捨てられます。
ロックサービスでは,文字列の内容についてはチェックしません。論理的に正しい名称を設定してください。資源名称に半角英数字以外の値を使った場合は,デッドロック情報,タイムアウト情報,およびlcklsコマンドの表示が乱れたり,資源名称が途中で切り捨てられる場合があります。
lockMode
排他制御モードを設定します。排他制御モードは次のどちらか一方を設定してください。重複して設定できません。
  • TP1ServerFlags.DCLCK_PR
    資源を参照します。ほかのUAPには参照だけを許可します。
  • TP1ServerFlags.DCLCK_EX
    資源を更新します。ほかのUAPには参照も更新も禁止します。
flags
資源の排他に関するフラグを設定します。設定できる値を次に示します。
  • TP1ServerFlags.DCLCK_WAIT
    ほかのUAPと資源を競合した場合に,資源の解放待ちにします。このフラグが設定されてない場合に競合したときは,例外応答します。
  • TP1ServerFlags.DCLCK_TEST
    資源が使えるかどうかをテストするときに設定します。このフラグを設定したときは,Getメソッドが正常終了しても,nameに設定した資源は確保されていないので注意してください。
  • TP1ServerFlags.DCNOFLAGS
    フラグを設定しません。

戻り値
なし

例外
Hitachi.OpenTP1.Server.TP1ServerException
次の情報が出力されます。
  • メッセージ
    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。
    "OpenTP1提供関数実行時にエラーが発生しました。"
    それ以外の場合は,各エラーに対応したメッセージが出力されます。
  • クラス名
    例外が発生したクラス名が出力されます。
  • メソッド名
    例外が発生したメソッド名が出力されます。
  • 引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)
    例外が発生する原因となった引数名が出力されます。
  • エラーコード
    発生原因に応じ,次のエラーコードが出力されます。
    エラーコード 説明
    DCLCKER_PARAM 引数に設定した値が間違っています。
    DCLCKER_WAIT ほかのUAPが,nameに名称を設定した資源を使っています。
    DCLCKER_DLOCK デッドロックが起こりました。
    DCLCKER_TIMOUT OpenTP1のロックサービス定義で指定した待ち時間でタイムアウトが発生したため,資源を確保できませんでした。
    DCLCKER_MEMORY 排他制御用のテーブルが不足しています。
    DCLCKER_OUTOFTRN トランザクション処理でないUAPから指定しています。
    DCLCKER_VERSION OpenTP1のライブラリとロックサービスのバージョンが一致していません。

 

ReleaseAll

説明
Getメソッドで指定した資源の排他をすべて解除します。同期点取得前に排他を解除するときに,ReleaseAllメソッドを呼び出します。
排他をしたグローバルトランザクションが終了したときに,OpenTP1のロックサービスによって自動的に排他は解除されます。このときは,UAPで排他を解除する必要はありません。

宣言
【C#の場合】
public static void ReleaseAll(
);
【Visual Basicの場合】
Public Shared Sub ReleaseAll( _
)
【J#の場合】
public static void ReleaseAll(
);

パラメタ
なし

戻り値
なし

例外
Hitachi.OpenTP1.Server.TP1ServerException
次の情報が出力されます。
  • メッセージ
    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。
    "OpenTP1提供関数実行時にエラーが発生しました。"
    それ以外の場合は,各エラーに対応したメッセージが出力されます。
  • クラス名
    例外が発生したクラス名が出力されます。
  • メソッド名
    例外が発生したメソッド名が出力されます。
  • 引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)
    例外が発生する原因となった引数名が出力されます。
  • エラーコード
    発生原因に応じ,次のエラーコードが出力されます。
    エラーコード 説明
    DCLCKER_OUTOFTRN トランザクション処理でないUAPからReleaseAllメソッドを呼び出しています。
    DCLCKER_NOTHING このメソッドを呼び出したトランザクションでは,資源を確保していません。
    DCLCKER_VERSION OpenTP1のライブラリとロックサービスのバージョンが一致していません。

 

ReleaseByName

説明
Getメソッドで指定した資源の排他を,資源名称を指定して解除します。同期点取得前に排他を解除するときに,ReleaseByNameメソッドを呼び出します。
排他をしたグローバルトランザクションが終了したときに,ロックサービスによって自動的に排他は解除されます。このときは,UAPで排他を解除する必要はありません。

宣言
【C#の場合】
public static void ReleaseByName(
    string name
);
【Visual Basicの場合】
Public Shared Sub ReleaseByName( _
    ByVal name As String _
)
【J#の場合】
public static void ReleaseByName(
    System.String name
);

パラメタ
name
排他の指定を解除する資源名称を設定します。資源名称はGetメソッドで設定した名称と同じ値を設定してください。

戻り値
なし

例外
Hitachi.OpenTP1.Server.TP1ServerException
次の情報が出力されます。
  • メッセージ
    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。
    "OpenTP1提供関数実行時にエラーが発生しました。"
    それ以外の場合は,各エラーに対応したメッセージが出力されます。
  • クラス名
    例外が発生したクラス名が出力されます。
  • メソッド名
    例外が発生したメソッド名が出力されます。
  • 引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)
    例外が発生する原因となった引数名が出力されます。
  • エラーコード
    発生原因に応じ,次のエラーコードが出力されます。
    エラーコード 説明
    DCLCKER_PARAM 引数に設定した値が間違っています。
    DCLCKER_OUTOFTRN トランザクション処理でないUAPからReleaseByNameメソッドを呼び出しています。
    DCLCKER_NOTHING 解除を指定した資源名称に該当する資源がありません。
    DCLCKER_VERSION OpenTP1のライブラリとロックサービスのバージョンが一致していません。