クラス HazelcastIndexedSessionRepository

java.lang.ObjectSE
org.springframework.session.hazelcast.HazelcastIndexedSessionRepository
実装されたすべてのインターフェース:
com.hazelcast.map.listener.EntryAddedListener<StringSE,MapSession>com.hazelcast.map.listener.EntryEvictedListener<StringSE,MapSession>com.hazelcast.map.listener.EntryExpiredListener<StringSE,MapSession>com.hazelcast.map.listener.EntryRemovedListener<StringSE,MapSession>com.hazelcast.map.listener.MapListenerEventListenerSEorg.springframework.beans.factory.DisposableBeanorg.springframework.beans.factory.InitializingBeanFindByIndexNameSessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>

public class HazelcastIndexedSessionRepository extends ObjectSE implements FindByIndexNameSessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>, com.hazelcast.map.listener.EntryAddedListener<StringSE,MapSession>, com.hazelcast.map.listener.EntryEvictedListener<StringSE,MapSession>, com.hazelcast.map.listener.EntryRemovedListener<StringSE,MapSession>, com.hazelcast.map.listener.EntryExpiredListener<StringSE,MapSession>, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
Hazelcast の分散 IMap にセッションを格納する SessionRepository 実装。

新しいインスタンスを作成する方法の例を以下に示します。

 Config config = new Config();

 // ... configure Hazelcast ...

 HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config);

 HazelcastIndexedSessionRepository sessionRepository =
         new HazelcastIndexedSessionRepository(hazelcastInstance);
 
findByIndexNameAndIndexValue(String, String) メソッドを使用したプリンシパル名によるセッションの検索をサポートするには、この実装に提供される IMap のカスタム構成が必要です。次のスニペットは、プログラムによる Hazelcast 構成を使用して必要な構成を定義する方法を示しています。
 AttributeConfig attributeConfig = new AttributeConfig()
         .setName(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE)
         .setExtractorClassName(rincipalNameExtractor.class.getName());

 Config config = new Config();

 config.getMapConfig(HazelcastIndexedSessionRepository.DEFAULT_SESSION_MAP_NAME)
         .addAttributeConfig(attributeConfig)
         .addIndexConfig(new IndexConfig(
                 IndexType.HASH,
                 HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE));

 Hazelcast.newHazelcastInstance(config);
 
この実装は、Hazelcast が支援する SessionRepository のイベントをリッスンし、それらのイベントを対応する Spring Session イベントに変換します。指定された ApplicationEventPublisher で Spring Session イベントを発行します。
導入:
2.2.0
  • フィールドの詳細

    • DEFAULT_SESSION_MAP_NAME

      public static final StringSE DEFAULT_SESSION_MAP_NAME
      セッションを保存するために Spring Session が使用するマップのデフォルト名。
      関連事項:
    • PRINCIPAL_NAME_ATTRIBUTE

      public static final StringSE PRINCIPAL_NAME_ATTRIBUTE
      プリンシパル名のカスタム属性名。
      関連事項:
  • コンストラクターの詳細

    • HazelcastIndexedSessionRepository

      public HazelcastIndexedSessionRepository(com.hazelcast.core.HazelcastInstance hazelcastInstance)
      新しい HazelcastIndexedSessionRepository インスタンスを作成します。
      パラメーター:
      hazelcastInstance - セッションの管理に使用する HazelcastInstance 
  • メソッドの詳細

    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
    • destroy

      public void destroy()
      次で指定:
      インターフェース org.springframework.beans.factory.DisposableBeandestroy 
    • setApplicationEventPublisher

      public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
      session events の公開に使用される ApplicationEventPublisher を設定します。デフォルトでは、セッションイベントは公開されません。
      パラメーター:
      applicationEventPublisher - セッションイベントの発行に使用される ApplicationEventPublisher。null にすることはできません。
    • setDefaultMaxInactiveInterval

      public void setDefaultMaxInactiveInterval(DurationSE defaultMaxInactiveInterval)
      新しく作成されたセッションが無効になるまでの、リクエスト間の最大非アクティブ間隔を秒単位で設定します。負の時間は、セッションがタイムアウトしないことを示します。デフォルトは 30 分です。
      パラメーター:
      defaultMaxInactiveInterval - デフォルトの maxInactiveInterval
    • setDefaultMaxInactiveInterval

      @DeprecatedSE(since="3.0.0") public void setDefaultMaxInactiveInterval(IntegerSE defaultMaxInactiveInterval)
      使用すべきではありません。
      3.0.0 以降、setDefaultMaxInactiveInterval(Duration) を推奨
      新しく作成されたセッションが無効になるまでの、リクエスト間の最大非アクティブ間隔を秒単位で設定します。負の時間は、セッションがタイムアウトしないことを示します。デフォルトは 1800 (30 分です)。
      パラメーター:
      defaultMaxInactiveInterval - 秒単位のデフォルトの maxInactiveInterval
    • setIndexResolver

      public void setIndexResolver(IndexResolver<Session> indexResolver)
      使用する IndexResolver を設定します。
      パラメーター:
      indexResolver - インデックスリゾルバー
    • setSessionMapName

      public void setSessionMapName(StringSE sessionMapName)
      セッションの保存に使用するマップの名前を設定します。
      パラメーター:
      sessionMapName - セッションマップ名
    • setFlushMode

      public void setFlushMode(FlushMode flushMode)
      Hazelcast フラッシュモードを設定します。デフォルトのフラッシュモードは FlushMode.ON_SAVE です。
      パラメーター:
      flushMode - 新しい Hazelcast フラッシュモード
    • setSaveMode

      public void setSaveMode(SaveMode saveMode)
      保存モードを設定します。
      パラメーター:
      saveMode - 保存モード
    • createSession

      public org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession createSession()
      インターフェースからコピーされた説明: SessionRepository
      この SessionRepository によって永続化できる新しい Session を作成します。

      これにより、Session の永続化方法の最適化とカスタマイズが可能になります。例: 返された実装は変更を追跡し、保存時にデルタのみを永続化する必要があることを保証する場合があります。

      次で指定:
      インターフェース SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>createSession 
      戻り値:
      この SessionRepository によって永続化できる新しい Session
    • save

      public void save(org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession session)
      インターフェースからコピーされた説明: SessionRepository
      SessionRepository.createSession() によって作成された Session が確実に保存されます。

      一部の実装では、変更を即座に保持する Session を返すことにより、Session が更新されたときに保存することを選択する場合があります。この場合、このメソッドは実際には何も実行しない可能性があります。

      次で指定:
      インターフェース SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>save 
      パラメーター:
      session - 保存する Session
    • findById

      public org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession findById(StringSE id)
      インターフェースからコピーされた説明: SessionRepository
      Session.getId() によって Session を取得するか、Session が見つからない場合は null を取得します。
      次で指定:
      インターフェース SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>findById 
      パラメーター:
      id - ルックアップする Session.getId()
      戻り値:
      Session.getId() による Session、または Session が見つからない場合は null。
    • deleteById

      public void deleteById(StringSE id)
      インターフェースからコピーされた説明: SessionRepository
      指定された Session.getId()Session を削除するか、Session が見つからない場合は何もしません。
      次で指定:
      インターフェース SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>deleteById 
      パラメーター:
      id - 削除する Session.getId()
    • findByIndexNameAndIndexValue

      public MapSE<StringSE,org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession> findByIndexNameAndIndexValue(StringSE indexName, StringSE indexValue)
      インターフェースからコピーされた説明: FindByIndexNameSessionRepository
      指定されたインデックス名インデックス値を含むすべてのセッションの Session に対するセッション ID の MapSE を検索します。
      次で指定:
      インターフェース FindByIndexNameSessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>findByIndexNameAndIndexValue 
      パラメーター:
      indexName - インデックスの名前 (i.e. FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME )
      indexValue - 検索するインデックスの値。
      戻り値:
      指定されたインデックス名とインデックス値を含むすべてのセッションの Session へのセッション ID の Map (非 null)。結果が見つからない場合は、空の Map が返されます。
    • entryAdded

      public void entryAdded(com.hazelcast.core.EntryEvent<StringSE,MapSession> event)
      次で指定:
      インターフェース com.hazelcast.map.listener.EntryAddedListener<StringSE,MapSession>entryAdded 
    • entryEvicted

      public void entryEvicted(com.hazelcast.core.EntryEvent<StringSE,MapSession> event)
      次で指定:
      インターフェース com.hazelcast.map.listener.EntryEvictedListener<StringSE,MapSession>entryEvicted 
    • entryRemoved

      public void entryRemoved(com.hazelcast.core.EntryEvent<StringSE,MapSession> event)
      次で指定:
      インターフェース com.hazelcast.map.listener.EntryRemovedListener<StringSE,MapSession>entryRemoved 
    • entryExpired

      public void entryExpired(com.hazelcast.core.EntryEvent<StringSE,MapSession> event)
      次で指定:
      インターフェース com.hazelcast.map.listener.EntryExpiredListener<StringSE,MapSession>entryExpired 
    • setSessionIdGenerator

      public void setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
      セッション ID の生成に使用する SessionIdGenerator を設定します。
      パラメーター:
      sessionIdGenerator - 使用する SessionIdGenerator
      導入:
      3.2