Class HttpExclusiveControlUtil

java.lang.Object
nablarch.common.web.exclusivecontrol.HttpExclusiveControlUtil

@Published public final class HttpExclusiveControlUtil extends Object
画面処理における排他制御機能(楽観的ロック)のユーティリティクラス。

楽観的ロックは、下記の機能により実現する。

  • 処理対象データに対するバージョン番号を取得する。
  • 取得済みのバージョン番号が更新されていないかチェックする。
  • 取得済みのバージョン番号が更新されていないかチェックし、バージョン番号を更新する。
取得したバージョン番号は、フレームワークにより、ウィンドウスコープを使用して画面間を持回る。 このため、本クラスは、n:formタグとhiddenタグの暗号化機能の使用を前提とする。 本クラスは、画面処理に依存しない楽観的ロック機能の処理をExclusiveControlUtilに委譲する。 UniversalDaoを使用する場合には、 このクラスではなくUniversalDaoを使用して排他制御を行うこと。
Author:
Kiyohito Itoh
  • Field Details

    • VERSION_PARAM_NAME

      public static final String VERSION_PARAM_NAME
      バージョン番号をhiddenタグに出力する際に使用するパラメータ名
      See Also:
    • VERSIONS_VARIABLE_NAME

      public static final String VERSIONS_VARIABLE_NAME
      バージョン番号をリクエストスコープに設定する際に使用する変数名
      See Also:
  • Method Details

    • prepareVersions

      public static boolean prepareVersions(ExecutionContext context, List<? extends ExclusiveControlContext> exclusiveControlContexts)
      バージョン番号を準備する。

      指定されたExclusiveControlContextリストを使用してバージョン番号を取得し、 次回リクエスト時にバージョン番号を送信するために、バージョン番号をリクエストスコープに設定する。 リクエストスコープに設定したバージョン番号は、n:formタグによりウィンドウスコープに設定される。

      1つでもバージョン番号を準備できなかった場合は処理を中断しfalseを返す。

      Parameters:
      context - 実行コンテキスト
      exclusiveControlContexts - 排他制御コンテキストリスト
      Returns:
      すべてのバージョン番号を準備できた場合はtrue
    • prepareVersion

      public static boolean prepareVersion(ExecutionContext context, ExclusiveControlContext exclusiveControlContext)
      バージョン番号を準備する。

      指定されたExclusiveControlContextを使用してバージョン番号を取得し、 次回リクエスト時にバージョン番号を送信するために、バージョン番号をリクエストスコープに設定する。 リクエストスコープに設定したバージョン番号は、n:formタグによりウィンドウスコープに設定される。

      Parameters:
      context - 実行コンテキスト
      exclusiveControlContext - 排他制御コンテキスト
      Returns:
      バージョン番号を準備できた場合はtrue
    • checkVersions

      public static void checkVersions(HttpRequest request, ExecutionContext context) throws OptimisticLockException
      バージョン番号をチェックする。

      リクエストパラメータに含まれるバージョン番号を使用して、 バージョン番号が更新されていないかをチェックする。 どれか一つでもバージョン番号が更新されていた場合は、 更新されているバージョン番号を設定したOptimisticLockExceptionを送出する。

      全てのバージョン番号が更新されていない場合は、 次回リクエスト時にバージョン番号を送信するために、バージョン番号をリクエストスコープに設定する。 リクエストスコープに設定したバージョン番号は、n:formタグによりウィンドウスコープに設定される。

      Parameters:
      request - リクエスト
      context - 実行コンテキスト
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • checkVersions

      public static void checkVersions(HttpRequest request, ExecutionContext context, String targetPkListParamName) throws OptimisticLockException
      指定されたウィンドウスコープ変数上の配列に格納された各PK値に対して バージョン番号をチェックする。

      リクエストパラメータに含まれるバージョン番号を使用して、 バージョン番号が更新されていないかをチェックする。 どれか一つでもバージョン番号が更新されていた場合は、 更新されているバージョン番号を設定したOptimisticLockExceptionを送出する。

      全てのバージョン番号が更新されていない場合は、 次回リクエスト時にバージョン番号を送信するために、バージョン番号をリクエストスコープに設定する。 リクエストスコープに設定したバージョン番号は、n:formタグによりウィンドウスコープに設定される。

      なお、PKが組み合わせキーとなる場合はcheckVersion(HttpRequest, ExecutionContext, ExclusiveControlContext) を使用すること。

      Parameters:
      request - リクエスト
      context - 実行コンテキスト
      targetPkListParamName - 更新対象のPK値の配列を格納したウィンドウスコープ変数名
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • checkVersion

      public static void checkVersion(HttpRequest request, ExecutionContext context, ExclusiveControlContext exclusiveControlContext) throws OptimisticLockException
      引数で渡された排他制御コンテキストに格納されたPK値に対してバージョン番号をチェックする。

      排他制御コンテキストに格納されたバージョン番号を使用して、バージョン番号が更新されていないかをチェックする。 どれか一つでもバージョン番号が更新されていた場合は、更新されているバージョン番号を設定したOptimisticLockExceptionを送出する。

      全てのバージョン番号が更新されていない場合は、 次回リクエスト時にバージョン番号を送信するために、バージョン番号をリクエストスコープに設定する。 リクエストスコープに設定したバージョン番号は、n:formタグによりウィンドウスコープに設定される。

      Parameters:
      request - リクエスト
      context - 実行コンテキスト
      exclusiveControlContext - 排他制御コンテキスト
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • updateVersionsWithCheck

      public static void updateVersionsWithCheck(HttpRequest request) throws OptimisticLockException
      バージョン番号の更新チェックとバージョン番号の更新を行う。

      リクエストパラメータに含まれるバージョン番号を使用して、 バージョン番号が更新されていないかのチェックと更新を行う。 どれか一つでもバージョン番号が更新されていた場合は、 更新されているバージョン番号を設定したOptimisticLockExceptionを送出する。

      Parameters:
      request - リクエスト
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • updateVersionsWithCheck

      public static void updateVersionsWithCheck(HttpRequest request, String targetPkListParamName) throws OptimisticLockException
      指定されたウィンドウスコープ変数上の配列に格納された各PK値に対して バージョン番号の更新チェックとバージョン番号の更新を行う。

      リクエストパラメータに含まれるバージョン番号を使用して、 バージョン番号が更新されていないかのチェックと更新を行う。 どれか一つでもバージョン番号が更新されていた場合は、 更新されているバージョン番号を設定したOptimisticLockExceptionを送出する。

      なお、PKが組み合わせキーとなる場合は、updateVersionWithCheck(HttpRequest, ExclusiveControlContext) を使用すること。

      Parameters:
      request - リクエスト
      targetPkListParamName - 更新対象のPK値の配列を格納したウィンドウスコープ変数名
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • updateVersionWithCheck

      public static void updateVersionWithCheck(HttpRequest request, ExclusiveControlContext exclusiveControlContext) throws OptimisticLockException
      引数で渡された排他制御コンテキストに格納されたPK値に対してバージョン番号のチェックとバージョン情報の更新を行う。

      排他制御コンテキストに格納されたバージョン番号を使用して、バージョン番号が更新されていないかのチェックと更新を行う。 どれか一つでもバージョン番号が更新されていた場合は、更新されているバージョン番号を設定したOptimisticLockExceptionを送出する。

      Parameters:
      request - リクエスト
      exclusiveControlContext - 排他制御コンテキスト
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合