クラス DefaultLockRepository

java.lang.ObjectSE
org.springframework.integration.jdbc.lock.DefaultLockRepository
実装されているすべてのインターフェース:
CloseableSEAutoCloseableSEAwareInitializingBeanSmartInitializingSingletonApplicationContextAwareLifecyclePhasedSmartLifecycleLockRepository

org/springframework/integration/jdbc/schema-*.sql で提示されたスクリプトのテーブルに基づく LockRepository のデフォルトの実装。

このリポジトリは、異なる JdbcLockRegistry インスタンス間で共有できません。そうしないと、JdbcLockRegistry がローカル同期に非共有 ReentrantLockSE を使用する LockSE 契約を破る可能性が生じます。

このクラスは SmartLifecycle を実装し、start() で指定されたプレフィックスに従って SELECT COUNT(REGION) FROM %sLOCK クエリを呼び出し、必要なテーブルが DB に存在するかどうかを確認します。テーブルが存在しない場合、アプリケーションコンテキストは起動できません。このチェックは setCheckDatabaseOnStart(boolean) を介して無効にできます。

導入:
4.3
作成者:
Dave Syer, Artem Bilan, Glenn Renfro, Gary Russell, Alexandre Strubel, Ruslan Stelmachenko, Eddie Cho
  • フィールドの詳細

    • DEFAULT_TABLE_PREFIX

      public static final StringSE DEFAULT_TABLE_PREFIX
      テーブルプレフィックスプロパティのデフォルト値。
      関連事項:
    • DEFAULT_TTL

      public static final DurationSE DEFAULT_TTL
      time-to-live プロパティのデフォルト値。
  • コンストラクターの詳細

    • DefaultLockRepository

      public DefaultLockRepository(DataSourceSE dataSource)
      ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をランダムな UUIDSE に初期化するコンストラクター。
      パラメーター:
      dataSource - ロックリポジトリを維持するために使用される DataSourceSE
    • DefaultLockRepository

      public DefaultLockRepository(DataSourceSE dataSource, StringSE id)
      ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をユーザーが指定できるようにするコンストラクター。
      パラメーター:
      dataSource - ロックリポジトリを維持するために使用される DataSourceSE
      id - リポジトリによって処理されるロックに関連付けられるクライアント ID。
      導入:
      4.3.13
  • メソッドの詳細

    • setRegion

      public void setRegion(StringSE region)
      すべてのロックの一意のグループ化識別子がこのストアで保持されました。複数のリージョンを使用すると、さまざまな目的でストアを(必要に応じて)パーティション化できます。デフォルトは DEFAULT です。
      パラメーター:
      region - 設定する領域名
    • setPrefix

      public void setPrefix(StringSE prefix)
      クエリから使用されるターゲットデータベーステーブルのプレフィックスを指定します。
      パラメーター:
      prefix - 設定するプレフィックス (デフォルトは INT_)。
    • setTimeToLive

      public void setTimeToLive(int timeToLive)
      デッドロックが期限切れになるまでの時間をミリ秒単位で指定します。
      パラメーター:
      timeToLive - デッドロックが期限切れになるまでの時間。
    • setTransactionManager

      public void setTransactionManager(PlatformTransactionManager transactionManager)
      操作用の PlatformTransactionManager を設定します。それ以外の場合は、プライマリ PlatformTransactionManager Bean がアプリケーションコンテキストから取得されます。
      パラメーター:
      transactionManager - 使用する PlatformTransactionManager
      導入:
      6.0
    • setApplicationContext

      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
      次で指定:
      インターフェース ApplicationContextAwaresetApplicationContext 
      例外:
      BeansException
    • setUpdateQuery

      public void setUpdateQuery(StringSE updateQuery)
      ロックレコードのカスタム UPDATE クエリを設定します。getUpdateQuery() はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。
       
        UPDATE %sLOCK
       			SET CLIENT_ID=?, CREATED_DATE=?
       			WHERE REGION=? AND LOCK_KEY=? AND (CLIENT_ID=? OR CREATED_DATE<?)
       
       
      パラメーター:
      updateQuery - ロックレコードを更新するクエリ。
      導入:
      6.1
      関連事項:
    • getUpdateQuery

      public StringSE getUpdateQuery()
      現在の更新クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。
      戻り値:
      現在の更新クエリ。
      導入:
      6.1
      関連事項:
    • setInsertQuery

      public void setInsertQuery(StringSE insertQuery)
      ロックレコードのカスタム INSERT クエリを設定します。getInsertQuery() はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは INSERT INTO %sLOCK (REGION, LOCK_KEY, CLIENT_ID, CREATED_DATE) VALUES (?, ?, ?, ?) です。たとえば、PostgreSQL ON CONFLICT DO NOTHING ヒントは次のように提供できます。
       
        lockRepository.setInsertQuery(lockRepository.getInsertQuery() + " ON CONFLICT DO NOTHING");
       
       
      パラメーター:
      insertQuery - ロックレコードの挿入クエリ。
      導入:
      6.1
      関連事項:
    • getInsertQuery

      public StringSE getInsertQuery()
      現在の挿入クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。
      戻り値:
      現在の挿入クエリ。
      導入:
      6.1
      関連事項:
    • setRenewQuery

      public void setRenewQuery(StringSE renewQuery)
      ロックレコードのカスタム INSERT クエリを設定します。getRenewQuery() はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。
       
        UPDATE %sLOCK
       			SET CREATED_DATE=?
       			WHERE REGION=? AND LOCK_KEY=? AND CLIENT_ID=?
       
       
      パラメーター:
      renewQuery - ロックレコードを更新するための更新クエリ。
      導入:
      6.1
      関連事項:
    • getRenewQuery

      public StringSE getRenewQuery()
      現在の更新クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。
      戻り値:
      現在の更新クエリ。
      導入:
      6.1
      関連事項:
    • setCheckDatabaseOnStart

      public void setCheckDatabaseOnStart(boolean checkDatabaseOnStart)
      開始時にデータベースチェッククエリを実行するかどうかのフラグ。
      パラメーター:
      checkDatabaseOnStart - データベースチェックを実行しない場合は false。
      導入:
      6.2
    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • afterSingletonsInstantiated

      public void afterSingletonsInstantiated()
      次で指定:
      インターフェース SmartInitializingSingletonafterSingletonsInstantiated 
    • isAutoStartup

      public boolean isAutoStartup()
      次で指定:
      インターフェース SmartLifecycleisAutoStartup 
    • start

      public void start()
      次で指定:
      インターフェース Lifecyclestart 
    • stop

      public void stop()
      次で指定:
      インターフェース Lifecyclestop 
    • isRunning

      public boolean isRunning()
      次で指定:
      インターフェース LifecycleisRunning 
    • close

      public void close()
      次で指定:
      インターフェース AutoCloseableSEclose 
      次で指定:
      インターフェース CloseableSEclose 
      次で指定:
      インターフェース LockRepositoryclose 
    • delete

      public boolean delete(StringSE lock)
      インターフェースからコピーされた説明: LockRepository
      このリポジトリからロックを解除します。
      次で指定:
      インターフェース LockRepositorydelete 
      パラメーター:
      lock - 削除するロック。
      戻り値:
      削除されたかどうか。
    • acquire

      public boolean acquire(StringSE lock)
      インターフェースからコピーされた説明: LockRepository
      キーのロックを取得します。
      次で指定:
      インターフェース LockRepositoryacquire 
      パラメーター:
      lock - lock を取得するためのキー。
      戻り値:
      取得したかどうか。
    • isAcquired

      public boolean isAcquired(StringSE lock)
      インターフェースからコピーされた説明: LockRepository
      このリポジトリによってロックが保持されているかどうかを確認します。
      次で指定:
      インターフェース LockRepositoryisAcquired 
      パラメーター:
      lock - チェックするロック。
      戻り値:
      取得したかどうか。
    • deleteExpired

      public void deleteExpired()
      インターフェースからコピーされた説明: LockRepository
      期限切れのロックをすべて削除します。
      次で指定:
      インターフェース LockRepositorydeleteExpired 
    • renew

      public boolean renew(StringSE lock)
      インターフェースからコピーされた説明: LockRepository
      ロックのリースを更新します。
      次で指定:
      インターフェース LockRepositoryrenew 
      パラメーター:
      lock - 更新するロック。
      戻り値:
      更新するかしないか。