Class HazelcastIndexedSessionRepository
java.lang.Object
org.springframework.session.hazelcast.HazelcastIndexedSessionRepository
- All Implemented Interfaces:
com.hazelcast.map.listener.EntryAddedListener<String,
,org.springframework.session.MapSession> com.hazelcast.map.listener.EntryEvictedListener<String,
,org.springframework.session.MapSession> com.hazelcast.map.listener.EntryExpiredListener<String,
,org.springframework.session.MapSession> com.hazelcast.map.listener.EntryRemovedListener<String,
,org.springframework.session.MapSession> com.hazelcast.map.listener.MapListener
,EventListener
,org.springframework.beans.factory.DisposableBean
,org.springframework.beans.factory.InitializingBean
,org.springframework.session.FindByIndexNameSessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
,org.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
public class HazelcastIndexedSessionRepository
extends Object
implements org.springframework.session.FindByIndexNameSessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>, com.hazelcast.map.listener.EntryAddedListener<String,org.springframework.session.MapSession>, com.hazelcast.map.listener.EntryEvictedListener<String,org.springframework.session.MapSession>, com.hazelcast.map.listener.EntryRemovedListener<String,org.springframework.session.MapSession>, com.hazelcast.map.listener.EntryExpiredListener<String,org.springframework.session.MapSession>, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
A
SessionRepository
implementation that stores
sessions in Hazelcast's distributed IMap
.
An example of how to create a new instance can be seen below:
Config config = new Config(); // ... configure Hazelcast ... HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config); HazelcastIndexedSessionRepository sessionRepository = new HazelcastIndexedSessionRepository(hazelcastInstance);In order to support finding sessions by principal name using
findByIndexNameAndIndexValue(String, String)
method, custom configuration of
IMap
supplied to this implementation is required.
The following snippet demonstrates how to define required configuration using
programmatic Hazelcast Configuration:
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);This implementation listens for events on the Hazelcast-backed SessionRepository and translates those events into the corresponding Spring Session events. Publish the Spring Session events with the given
ApplicationEventPublisher
.
- entryAdded -
SessionCreatedEvent
- entryEvicted -
SessionExpiredEvent
- entryRemoved -
SessionDeletedEvent
- Since:
- 2.2.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
The default name of map used by Spring Session to store sessions.static final String
The principal name custom attribute name.Fields inherited from interface org.springframework.session.FindByIndexNameSessionRepository
PRINCIPAL_NAME_INDEX_NAME
-
Constructor Summary
ConstructorsConstructorDescriptionHazelcastIndexedSessionRepository
(com.hazelcast.core.HazelcastInstance hazelcastInstance) Create a newHazelcastIndexedSessionRepository
instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession
void
deleteById
(String id) void
destroy()
void
entryAdded
(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) void
entryEvicted
(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) void
entryExpired
(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) void
entryRemoved
(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession
Map<String,
org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession> findByIndexNameAndIndexValue
(String indexName, String indexValue) void
save
(org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession session) void
setApplicationEventPublisher
(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Sets theApplicationEventPublisher
that is used to publishsession events
.void
setDefaultMaxInactiveInterval
(Integer defaultMaxInactiveInterval) Deprecated.void
setDefaultMaxInactiveInterval
(Duration defaultMaxInactiveInterval) Set the maximum inactive interval in seconds between requests before newly created sessions will be invalidated.void
setFlushMode
(org.springframework.session.FlushMode flushMode) Sets the Hazelcast flush mode.void
setIndexResolver
(org.springframework.session.IndexResolver<org.springframework.session.Session> indexResolver) Set theIndexResolver
to use.void
setSaveMode
(org.springframework.session.SaveMode saveMode) Set the save mode.void
setSessionMapName
(String sessionMapName) Set the name of map used to store sessions.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.session.FindByIndexNameSessionRepository
findByPrincipalName
-
Field Details
-
DEFAULT_SESSION_MAP_NAME
The default name of map used by Spring Session to store sessions.- See Also:
-
PRINCIPAL_NAME_ATTRIBUTE
The principal name custom attribute name.- See Also:
-
-
Constructor Details
-
HazelcastIndexedSessionRepository
public HazelcastIndexedSessionRepository(com.hazelcast.core.HazelcastInstance hazelcastInstance) Create a newHazelcastIndexedSessionRepository
instance.- Parameters:
hazelcastInstance
- theHazelcastInstance
to use for managing sessions
-
-
Method Details
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
-
destroy
public void destroy()- Specified by:
destroy
in interfaceorg.springframework.beans.factory.DisposableBean
-
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Sets theApplicationEventPublisher
that is used to publishsession events
. The default is to not publish session events.- Parameters:
applicationEventPublisher
- theApplicationEventPublisher
that is used to publish session events. Cannot be null.
-
setDefaultMaxInactiveInterval
Set the maximum inactive interval in seconds between requests before newly created sessions will be invalidated. A negative time indicates that the session will never time out. The default is 30 minutes.- Parameters:
defaultMaxInactiveInterval
- the default maxInactiveInterval
-
setDefaultMaxInactiveInterval
@Deprecated(since="3.0.0") public void setDefaultMaxInactiveInterval(Integer defaultMaxInactiveInterval) Deprecated.since 3.0.0, in favor ofsetDefaultMaxInactiveInterval(Duration)
Set the maximum inactive interval in seconds between requests before newly created sessions will be invalidated. A negative time indicates that the session will never time out. The default is 1800 (30 minutes).- Parameters:
defaultMaxInactiveInterval
- the default maxInactiveInterval in seconds
-
setIndexResolver
public void setIndexResolver(org.springframework.session.IndexResolver<org.springframework.session.Session> indexResolver) Set theIndexResolver
to use.- Parameters:
indexResolver
- the index resolver
-
setSessionMapName
Set the name of map used to store sessions.- Parameters:
sessionMapName
- the session map name
-
setFlushMode
public void setFlushMode(org.springframework.session.FlushMode flushMode) Sets the Hazelcast flush mode. Default flush mode isFlushMode.ON_SAVE
.- Parameters:
flushMode
- the new Hazelcast flush mode
-
setSaveMode
public void setSaveMode(org.springframework.session.SaveMode saveMode) Set the save mode.- Parameters:
saveMode
- the save mode
-
createSession
public org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession createSession()- Specified by:
createSession
in interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
save
public void save(org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession session) - Specified by:
save
in interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
findById
public org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession findById(String id) - Specified by:
findById
in interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
deleteById
- Specified by:
deleteById
in interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
findByIndexNameAndIndexValue
public Map<String,org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession> findByIndexNameAndIndexValue(String indexName, String indexValue) - Specified by:
findByIndexNameAndIndexValue
in interfaceorg.springframework.session.FindByIndexNameSessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
entryAdded
public void entryAdded(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) - Specified by:
entryAdded
in interfacecom.hazelcast.map.listener.EntryAddedListener<String,
org.springframework.session.MapSession>
-
entryEvicted
public void entryEvicted(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) - Specified by:
entryEvicted
in interfacecom.hazelcast.map.listener.EntryEvictedListener<String,
org.springframework.session.MapSession>
-
entryRemoved
public void entryRemoved(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) - Specified by:
entryRemoved
in interfacecom.hazelcast.map.listener.EntryRemovedListener<String,
org.springframework.session.MapSession>
-
entryExpired
public void entryExpired(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) - Specified by:
entryExpired
in interfacecom.hazelcast.map.listener.EntryExpiredListener<String,
org.springframework.session.MapSession>
-
setDefaultMaxInactiveInterval(Duration)