public class BasicDuplicateProcessChecker extends java.lang.Object implements DuplicateProcessChecker, Initializable
DuplicateProcessChecker
の実装クラス。
2重起動チェックは、データベースのテーブルを用いて行う。
データベースのテーブルには、予めプロセスを識別するための値を設定しておく必要がある。
プロセスを識別する値が設定さていない場合は、2重起動チェックが正しく行えないが、
2重起動の可能性もあるため2重起動であることを示す例外を送出する。
2重起動チェック用テーブルレイアウト例を以下に示す。
---------------------------------- ------------------------------------------------------ カラム名 説明 ---------------------------------- ------------------------------------------------------ プロセス識別子 プロセスを一意に識別するための値を格納する。 例えばジョブIDなど プロセスアクティブフラグ プロセスの現在の状態を格納する。 * 0:非アクティブ(実行されていない状態) * 1:アクティブ(実行されている状態) ---------------------------------- ------------------------------------------------------
Constructor and Description |
---|
BasicDuplicateProcessChecker() |
Modifier and Type | Method and Description |
---|---|
void |
checkAndActive(java.lang.String processIdentifier)
プロセスの2重起動チェックとアクティブ化を行う。
プロセスが既に実行中の場合には、
AlreadyProcessRunningException を送出する。 |
void |
inactive(java.lang.String processIdentifier)
プロセスの非アクティブ化を行う。
|
void |
initialize()
2重起動チェック用のSQL文を構築する。
|
void |
setDbTransactionManager(SimpleDbTransactionManager dbTransactionManager)
データベーストランザクションマネージャを設定する。
|
void |
setPermitProcessIdentifier(java.lang.String[] permitProcessIdentifier)
2重起動を許可するプロセスの識別子リストを設定する。
|
void |
setProcessActiveFlgColumnName(java.lang.String processActiveFlgColumnName)
プロセスが起動中であることを示すフラグが格納されるカラムの物理名を設定する。
|
void |
setProcessIdentifierColumnName(java.lang.String processIdentifierColumnName)
プロセスを特定するための識別子が格納されるカラムの物理名を設定する。
|
void |
setTableName(java.lang.String tableName)
テーブル名を設定する。
|
public void initialize()
initialize
in interface Initializable
public void setDbTransactionManager(SimpleDbTransactionManager dbTransactionManager)
dbTransactionManager
- データベーストランザクションマネージャpublic void setTableName(java.lang.String tableName)
tableName
- テーブル名public void setProcessIdentifierColumnName(java.lang.String processIdentifierColumnName)
processIdentifierColumnName
- プロセスを識別する値のカラム物理名public void setProcessActiveFlgColumnName(java.lang.String processActiveFlgColumnName)
processActiveFlgColumnName
- プロセス起動中フラグのカラム物理名public void setPermitProcessIdentifier(java.lang.String[] permitProcessIdentifier)
permitProcessIdentifier
- 許可リクエストIDのリストpublic void checkAndActive(java.lang.String processIdentifier) throws AlreadyProcessRunningException
DuplicateProcessChecker
AlreadyProcessRunningException
を送出する。checkAndActive
in interface DuplicateProcessChecker
processIdentifier
- プロセスを識別する値AlreadyProcessRunningException
- プロセスの多重起動の場合public void inactive(java.lang.String processIdentifier)
DuplicateProcessChecker
inactive
in interface DuplicateProcessChecker
processIdentifier
- プロセスを識別する値