分散トランザクション処理機能 TP1/Extension for .NET Framework 使用の手引
![[目次]](FIGURE/CONTENT.GIF)
![[用語]](FIGURE/GLOSS.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
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
- 説明
- 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のライブラリとロックサービスのバージョンが一致していません。 |
All Rights Reserved. Copyright (C) 2006, Hitachi, Ltd.