Class BasicDuplicateProcessChecker

java.lang.Object
nablarch.fw.handler.BasicDuplicateProcessChecker
All Implemented Interfaces:
Initializable, DuplicateProcessChecker

public class BasicDuplicateProcessChecker extends Object implements DuplicateProcessChecker, Initializable
データベースのテーブルを用いてプロセスの多重起動防止を行うDuplicateProcessCheckerの実装クラス。

2重起動チェックは、データベースのテーブルを用いて行う。 データベースのテーブルには、予めプロセスを識別するための値を設定しておく必要がある。 プロセスを識別する値が設定さていない場合は、2重起動チェックが正しく行えないが、 2重起動の可能性もあるため2重起動であることを示す例外を送出する。

2重起動チェック用テーブルレイアウト例を以下に示す。

 ----------------------------------   ------------------------------------------------------
 カラム名                             説明
 ----------------------------------   ------------------------------------------------------
 プロセス識別子                       プロセスを一意に識別するための値を格納する。

                                      例えばジョブIDなど

 プロセスアクティブフラグ             プロセスの現在の状態を格納する。

                                      * 0:非アクティブ(実行されていない状態)
                                      * 1:アクティブ(実行されている状態)
 ----------------------------------   ------------------------------------------------------
 
Author:
Hisaaki Shioiri
  • Constructor Details

    • BasicDuplicateProcessChecker

      public BasicDuplicateProcessChecker()
  • Method Details

    • initialize

      public void initialize()
      2重起動チェック用のSQL文を構築する。
      Specified by:
      initialize in interface Initializable
    • setDbTransactionManager

      public void setDbTransactionManager(SimpleDbTransactionManager dbTransactionManager)
      データベーストランザクションマネージャを設定する。
      Parameters:
      dbTransactionManager - データベーストランザクションマネージャ
    • setTableName

      public void setTableName(String tableName)
      テーブル名を設定する。
      Parameters:
      tableName - テーブル名
    • setProcessIdentifierColumnName

      public void setProcessIdentifierColumnName(String processIdentifierColumnName)
      プロセスを特定するための識別子が格納されるカラムの物理名を設定する。
      Parameters:
      processIdentifierColumnName - プロセスを識別する値のカラム物理名
    • setProcessActiveFlgColumnName

      public void setProcessActiveFlgColumnName(String processActiveFlgColumnName)
      プロセスが起動中であることを示すフラグが格納されるカラムの物理名を設定する。
      Parameters:
      processActiveFlgColumnName - プロセス起動中フラグのカラム物理名
    • setPermitProcessIdentifier

      public void setPermitProcessIdentifier(String[] permitProcessIdentifier)
      2重起動を許可するプロセスの識別子リストを設定する。
      Parameters:
      permitProcessIdentifier - 許可リクエストIDのリスト
    • checkAndActive

      public void checkAndActive(String processIdentifier) throws AlreadyProcessRunningException
      Description copied from interface: DuplicateProcessChecker
      プロセスの2重起動チェックとアクティブ化を行う。 プロセスが既に実行中の場合には、AlreadyProcessRunningExceptionを送出する。
      Specified by:
      checkAndActive in interface DuplicateProcessChecker
      Parameters:
      processIdentifier - プロセスを識別する値
      Throws:
      AlreadyProcessRunningException - プロセスの多重起動の場合
    • inactive

      public void inactive(String processIdentifier)
      Description copied from interface: DuplicateProcessChecker
      プロセスの非アクティブ化を行う。
      Specified by:
      inactive in interface DuplicateProcessChecker
      Parameters:
      processIdentifier - プロセスを識別する値