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 StringThe default name of map used by Spring Session to store sessions.static final StringThe 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 newHazelcastIndexedSessionRepositoryinstance. -
Method Summary
Modifier and TypeMethodDescriptionvoidorg.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSessionvoiddeleteById(String id) voiddestroy()voidentryAdded(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) voidentryEvicted(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) voidentryExpired(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) voidentryRemoved(com.hazelcast.core.EntryEvent<String, org.springframework.session.MapSession> event) org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSessionMap<String,org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession> findByIndexNameAndIndexValue(String indexName, String indexValue) voidsave(org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession session) voidsetApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Sets theApplicationEventPublisherthat is used to publishsession events.voidsetDefaultMaxInactiveInterval(Integer defaultMaxInactiveInterval) Deprecated.voidsetDefaultMaxInactiveInterval(Duration defaultMaxInactiveInterval) Set the maximum inactive interval in seconds between requests before newly created sessions will be invalidated.voidsetFlushMode(org.springframework.session.FlushMode flushMode) Sets the Hazelcast flush mode.voidsetIndexResolver(org.springframework.session.IndexResolver<org.springframework.session.Session> indexResolver) Set theIndexResolverto use.voidsetSaveMode(org.springframework.session.SaveMode saveMode) Set the save mode.voidsetSessionMapName(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, waitMethods 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 newHazelcastIndexedSessionRepositoryinstance.- Parameters:
hazelcastInstance- theHazelcastInstanceto use for managing sessions
-
-
Method Details
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean
-
destroy
public void destroy()- Specified by:
destroyin interfaceorg.springframework.beans.factory.DisposableBean
-
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Sets theApplicationEventPublisherthat is used to publishsession events. The default is to not publish session events.- Parameters:
applicationEventPublisher- theApplicationEventPublisherthat 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 theIndexResolverto 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:
createSessionin interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
save
public void save(org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession session) - Specified by:
savein interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
findById
public org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession findById(String id) - Specified by:
findByIdin interfaceorg.springframework.session.SessionRepository<org.springframework.session.hazelcast.HazelcastIndexedSessionRepository.HazelcastSession>
-
deleteById
- Specified by:
deleteByIdin 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:
findByIndexNameAndIndexValuein 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:
entryAddedin 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:
entryEvictedin 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:
entryRemovedin 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:
entryExpiredin interfacecom.hazelcast.map.listener.EntryExpiredListener<String,org.springframework.session.MapSession>
-
setDefaultMaxInactiveInterval(Duration)