Package org.apache.catalina.session
Class ManagerBase
- java.lang.Object
-
- org.apache.catalina.util.LifecycleBase
-
- org.apache.catalina.util.LifecycleMBeanBase
-
- org.apache.catalina.session.ManagerBase
-
- All Implemented Interfaces:
javax.management.MBeanRegistration
,JmxEnabled
,Lifecycle
,Manager
- Direct Known Subclasses:
ClusterManagerBase
,PersistentManagerBase
,StandardManager
public abstract class ManagerBase extends LifecycleMBeanBase implements Manager
Minimal implementation of the Manager interface that supports no session persistence or distributable capabilities. This class may be subclassed to create more sophisticated Manager implementations.- Author:
- Craig R. McClanahan
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
ManagerBase.SessionTiming
-
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
-
Field Summary
Fields Modifier and Type Field Description protected int
duplicates
protected java.util.concurrent.atomic.AtomicLong
expiredSessions
Number of sessions that have expired.protected int
maxActive
protected int
maxActiveSessions
The maximum number of active Sessions allowed, or -1 for no limit.protected int
processExpiresFrequency
Frequency of the session expiration, and related manager operations.protected long
processingTime
Processing time during session expiration.protected int
rejectedSessions
Number of session creations that failed due to maxActiveSessions.protected java.lang.String
secureRandomAlgorithm
The name of the algorithm to use to create instances ofSecureRandom
which are used to generate session IDs.protected java.lang.String
secureRandomClass
The Java class name of the secure random number generator class to be used when generating session identifiers.protected java.lang.String
secureRandomProvider
The name of the provider to use to create instances ofSecureRandom
which are used to generate session IDs.protected long
sessionCounter
protected java.util.Deque<ManagerBase.SessionTiming>
sessionCreationTiming
protected java.util.Deque<ManagerBase.SessionTiming>
sessionExpirationTiming
protected SessionIdGenerator
sessionIdGenerator
protected java.lang.Class<? extends SessionIdGenerator>
sessionIdGeneratorClass
protected int
sessionMaxAliveTime
The longest time (in seconds) that an expired session had been alive.protected java.util.Map<java.lang.String,Session>
sessions
The set of currently active Sessions for this Manager, keyed by session identifier.protected static StringManager
sm
The string manager for this package.protected java.beans.PropertyChangeSupport
support
The property change support for this component.protected static int
TIMING_STATS_CACHE_SIZE
-
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
-
-
Constructor Summary
Constructors Constructor Description ManagerBase()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
add(Session session)
Add this Session to the set of active Sessions for this Manager.void
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a property change listener to this component.void
backgroundProcess()
This method will be invoked by the context/container on a periodic basis and allows the manager to implement a method that executes periodic tasks, such as expiring sessions etc.void
changeSessionId(Session session, java.lang.String newId)
Change the session ID of the current session to a specified session ID.protected void
changeSessionId(Session session, java.lang.String newId, boolean notifySessionListeners, boolean notifyContainerListeners)
Session
createEmptySession()
Get a session from the recycled ones or create a new empty one.Session
createSession(java.lang.String sessionId)
Construct and return a new session object, based on the default settings specified by this Manager's properties.void
expireSession(java.lang.String sessionId)
Session
findSession(java.lang.String id)
Return the active Session, associated with this Manager, with the specified session id (if any); otherwise returnnull
.Session[]
findSessions()
Return the set of active Sessions associated with this Manager.protected java.lang.String
generateSessionId()
Generate and return a new session identifier.int
getActiveSessions()
Gets the number of currently active sessions.java.lang.String
getClassName()
Context
getContext()
Get the Context with which this Manager is associated.java.lang.String
getCreationTime(java.lang.String sessionId)
long
getCreationTimestamp(java.lang.String sessionId)
java.lang.String
getDomainInternal()
Method implemented by sub-classes to identify the domain in which MBeans should be registered.int
getDuplicates()
Number of duplicated session IDs generated by the random source.Engine
getEngine()
Retrieve the enclosing Engine for this Manager.long
getExpiredSessions()
Gets the number of sessions that have expired.java.lang.String
getJvmRoute()
Retrieve the JvmRoute for the enclosing Engine.java.lang.String
getLastAccessedTime(java.lang.String sessionId)
long
getLastAccessedTimestamp(java.lang.String sessionId)
int
getMaxActive()
Gets the maximum number of sessions that have been active at the same time.int
getMaxActiveSessions()
java.lang.String
getName()
protected StandardSession
getNewSession()
Get new session class to be used in the doLoad() method.boolean
getNotifyAttributeListenerOnUnchangedValue()
When an attribute that is already present in the session is added again under the same name and aHttpSessionAttributeListener
is configured for the session shouldHttpSessionAttributeListener.attributeReplaced(jakarta.servlet.http.HttpSessionBindingEvent)
be called?boolean
getNotifyBindingListenerOnUnchangedValue()
When an attribute that is already present in the session is added again under the same name and the attribute implementsHttpSessionBindingListener
, shouldHttpSessionBindingListener.valueUnbound(jakarta.servlet.http.HttpSessionBindingEvent)
be called followed byHttpSessionBindingListener.valueBound(jakarta.servlet.http.HttpSessionBindingEvent)
?java.lang.String
getObjectNameKeyProperties()
Allow sub-classes to specify the key properties component of theObjectName
that will be used to register this component.boolean
getPersistAuthentication()
Return whether sessions managed by this manager shall persist authentication information or not.boolean
getPersistAuthenticationNotes()
Deprecated.Will be removed in Tomcat 10.1.x where it is effectively hard-coded totrue
int
getProcessExpiresFrequency()
long
getProcessingTime()
int
getRejectedSessions()
Gets the number of sessions that were not created because the maximum number of active sessions was reached.java.lang.String
getSecureRandomAlgorithm()
java.lang.String
getSecureRandomClass()
java.lang.String
getSecureRandomProvider()
java.util.HashMap<java.lang.String,java.lang.String>
getSession(java.lang.String sessionId)
Returns information about the session with the given session id.boolean
getSessionActivityCheck()
If this istrue
, Tomcat will track the number of active requests for each session.java.lang.String
getSessionAttribute(java.lang.String sessionId, java.lang.String key)
For debugging.java.lang.String
getSessionAttributeNameFilter()
Obtain the regular expression used to filter session attribute based on attribute name.protected java.util.regex.Pattern
getSessionAttributeNamePattern()
ProvidesgetSessionAttributeNameFilter()
as a pre-compiled regular expression pattern.java.lang.String
getSessionAttributeValueClassNameFilter()
Obtain the regular expression used to filter session attribute based on the implementation class of the value.protected java.util.regex.Pattern
getSessionAttributeValueClassNamePattern()
ProvidesgetSessionAttributeValueClassNameFilter()
as a pre-compiled regular expression pattern.int
getSessionAverageAliveTime()
Gets the average time (in seconds) that expired sessions had been alive.long
getSessionCounter()
Returns the total number of sessions created by this manager.int
getSessionCreateRate()
Gets the current rate of session creation (in session per minute).int
getSessionExpireRate()
Gets the current rate of session expiration (in session per minute).SessionIdGenerator
getSessionIdGenerator()
boolean
getSessionLastAccessAtStart()
If this istrue
, the last accessed time for sessions will be calculated from the beginning of the previous request.int
getSessionMaxAliveTime()
Gets the longest time (in seconds) that an expired session had been alive.java.lang.String
getThisAccessedTime(java.lang.String sessionId)
long
getThisAccessedTimestamp(java.lang.String sessionId)
boolean
getWarnOnSessionAttributeFilterFailure()
Should a warn level log message be generated if a session attribute is not persisted / replicated / restored.protected void
initInternal()
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.java.lang.String
listSessionIds()
For debugging.void
processExpires()
Invalidate all sessions that have expired.void
remove(Session session)
Remove this Session from the active Sessions for this Manager.void
remove(Session session, boolean update)
Remove this Session from the active Sessions for this Manager.void
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a property change listener from this component.java.lang.String
rotateSessionId(Session session)
Change the session ID of the current session to a new randomly generated session ID.void
setContext(Context context)
Set the Context with which this Manager is associated.void
setDuplicates(int duplicates)
void
setExpiredSessions(long expiredSessions)
Sets the number of sessions that have expired.void
setMaxActive(int maxActive)
(Re)sets the maximum number of sessions that have been active at the same time.void
setMaxActiveSessions(int max)
Set the maximum number of active Sessions allowed, or -1 for no limit.void
setNotifyAttributeListenerOnUnchangedValue(boolean notifyAttributeListenerOnUnchangedValue)
Configure ifHttpSessionAttributeListener.attributeReplaced(jakarta.servlet.http.HttpSessionBindingEvent)
when an attribute that is already present in the session is added again under the same name and aHttpSessionAttributeListener
is configured for the session.void
setNotifyBindingListenerOnUnchangedValue(boolean notifyBindingListenerOnUnchangedValue)
Configure ifHttpSessionBindingListener.valueUnbound(jakarta.servlet.http.HttpSessionBindingEvent)
be called followed byHttpSessionBindingListener.valueBound(jakarta.servlet.http.HttpSessionBindingEvent)
when an attribute that is already present in the session is added again under the same name and the attribute implementsHttpSessionBindingListener
.void
setPersistAuthentication(boolean persistAuthentication)
Set whether sessions managed by this manager shall persist authentication information or not.void
setPersistAuthenticationNotes(boolean persistAuthenticationNotes)
Deprecated.Will be removed in Tomcat 10.1.x where it is effectively hard-coded totrue
void
setProcessExpiresFrequency(int processExpiresFrequency)
Set the manager checks frequency.void
setProcessingTime(long processingTime)
void
setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
Set the secure random number generator algorithm name.void
setSecureRandomClass(java.lang.String secureRandomClass)
Set the secure random number generator class name.void
setSecureRandomProvider(java.lang.String secureRandomProvider)
Set the secure random number generator provider name.void
setSessionActivityCheck(boolean sessionActivityCheck)
Configure if Tomcat will track the number of active requests for each session.void
setSessionAttributeNameFilter(java.lang.String sessionAttributeNameFilter)
Set the regular expression to use to filter session attributes based on attribute name.void
setSessionAttributeValueClassNameFilter(java.lang.String sessionAttributeValueClassNameFilter)
Set the regular expression to use to filter classes used for session attributes.void
setSessionCounter(long sessionCounter)
Sets the total number of sessions created by this manager.void
setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
Sets the session id generatorvoid
setSessionLastAccessAtStart(boolean sessionLastAccessAtStart)
Configure if the last accessed time for sessions will be calculated from the beginning of the previous request.void
setSessionMaxAliveTime(int sessionMaxAliveTime)
Sets the longest time (in seconds) that an expired session had been alive.void
setWarnOnSessionAttributeFilterFailure(boolean warnOnSessionAttributeFilterFailure)
Configure whether or not a warn level log message should be generated if a session attribute is not persisted / replicated / restored.protected void
startInternal()
Sub-classes must ensure that the state is changed toLifecycleState.STARTING
during the execution of this method.protected void
stopInternal()
Sub-classes must ensure that the state is changed toLifecycleState.STOPPING
during the execution of this method.java.lang.String
toString()
void
updateSessionMaxAliveTime(int sessionAliveTime)
Updates the sessionMaxAliveTime attribute if the candidate value is larger than the current value.boolean
willAttributeDistribute(java.lang.String name, java.lang.Object value)
Would the Manager distribute the given session attribute?-
Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister
-
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
-
-
-
Field Detail
-
secureRandomClass
protected java.lang.String secureRandomClass
The Java class name of the secure random number generator class to be used when generating session identifiers. The random number generator class must be self-seeding and have a zero-argument constructor. If not specified, an instance ofSecureRandom
will be generated.
-
secureRandomAlgorithm
protected java.lang.String secureRandomAlgorithm
The name of the algorithm to use to create instances ofSecureRandom
which are used to generate session IDs. If no algorithm is specified, SHA1PRNG is used. If SHA1PRNG is not available, the platform default will be used. To use the platform default (which may be SHA1PRNG), specify the empty string. If an invalid algorithm and/or provider is specified the SecureRandom instances will be created using the defaults. If that fails, the SecureRandom instances will be created using platform defaults.
-
secureRandomProvider
protected java.lang.String secureRandomProvider
The name of the provider to use to create instances ofSecureRandom
which are used to generate session IDs. If no provider is specified the platform default is used. If an invalid algorithm and/or provider is specified the SecureRandom instances will be created using the defaults. If that fails, the SecureRandom instances will be created using platform defaults.
-
sessionIdGenerator
protected SessionIdGenerator sessionIdGenerator
-
sessionIdGeneratorClass
protected java.lang.Class<? extends SessionIdGenerator> sessionIdGeneratorClass
-
sessionMaxAliveTime
protected volatile int sessionMaxAliveTime
The longest time (in seconds) that an expired session had been alive.
-
TIMING_STATS_CACHE_SIZE
protected static final int TIMING_STATS_CACHE_SIZE
- See Also:
- Constant Field Values
-
sessionCreationTiming
protected final java.util.Deque<ManagerBase.SessionTiming> sessionCreationTiming
-
sessionExpirationTiming
protected final java.util.Deque<ManagerBase.SessionTiming> sessionExpirationTiming
-
expiredSessions
protected final java.util.concurrent.atomic.AtomicLong expiredSessions
Number of sessions that have expired.
-
sessions
protected java.util.Map<java.lang.String,Session> sessions
The set of currently active Sessions for this Manager, keyed by session identifier.
-
sessionCounter
protected long sessionCounter
-
maxActive
protected volatile int maxActive
-
maxActiveSessions
protected int maxActiveSessions
The maximum number of active Sessions allowed, or -1 for no limit.
-
rejectedSessions
protected int rejectedSessions
Number of session creations that failed due to maxActiveSessions.
-
duplicates
protected volatile int duplicates
-
processingTime
protected long processingTime
Processing time during session expiration.
-
processExpiresFrequency
protected int processExpiresFrequency
Frequency of the session expiration, and related manager operations. Manager operations will be done once for the specified amount of backgroundProcess calls (ie, the lower the amount, the most often the checks will occur).
-
sm
protected static final StringManager sm
The string manager for this package.
-
support
protected final java.beans.PropertyChangeSupport support
The property change support for this component.
-
-
Method Detail
-
getNotifyAttributeListenerOnUnchangedValue
public boolean getNotifyAttributeListenerOnUnchangedValue()
Description copied from interface:Manager
When an attribute that is already present in the session is added again under the same name and aHttpSessionAttributeListener
is configured for the session shouldHttpSessionAttributeListener.attributeReplaced(jakarta.servlet.http.HttpSessionBindingEvent)
be called?The default value is
true
.- Specified by:
getNotifyAttributeListenerOnUnchangedValue
in interfaceManager
- Returns:
true
if the listener will be notified,false
if it will not
-
setNotifyAttributeListenerOnUnchangedValue
public void setNotifyAttributeListenerOnUnchangedValue(boolean notifyAttributeListenerOnUnchangedValue)
Description copied from interface:Manager
Configure ifHttpSessionAttributeListener.attributeReplaced(jakarta.servlet.http.HttpSessionBindingEvent)
when an attribute that is already present in the session is added again under the same name and aHttpSessionAttributeListener
is configured for the session.- Specified by:
setNotifyAttributeListenerOnUnchangedValue
in interfaceManager
- Parameters:
notifyAttributeListenerOnUnchangedValue
-true
the listener will be called,false
it will not
-
getNotifyBindingListenerOnUnchangedValue
public boolean getNotifyBindingListenerOnUnchangedValue()
Description copied from interface:Manager
When an attribute that is already present in the session is added again under the same name and the attribute implementsHttpSessionBindingListener
, shouldHttpSessionBindingListener.valueUnbound(jakarta.servlet.http.HttpSessionBindingEvent)
be called followed byHttpSessionBindingListener.valueBound(jakarta.servlet.http.HttpSessionBindingEvent)
?The default value is
false
.- Specified by:
getNotifyBindingListenerOnUnchangedValue
in interfaceManager
- Returns:
true
if the listener will be notified,false
if it will not
-
setNotifyBindingListenerOnUnchangedValue
public void setNotifyBindingListenerOnUnchangedValue(boolean notifyBindingListenerOnUnchangedValue)
Description copied from interface:Manager
Configure ifHttpSessionBindingListener.valueUnbound(jakarta.servlet.http.HttpSessionBindingEvent)
be called followed byHttpSessionBindingListener.valueBound(jakarta.servlet.http.HttpSessionBindingEvent)
when an attribute that is already present in the session is added again under the same name and the attribute implementsHttpSessionBindingListener
.- Specified by:
setNotifyBindingListenerOnUnchangedValue
in interfaceManager
- Parameters:
notifyBindingListenerOnUnchangedValue
-true
the listener will be called,false
it will not
-
getSessionActivityCheck
public boolean getSessionActivityCheck()
Description copied from interface:Manager
If this istrue
, Tomcat will track the number of active requests for each session. When determining if a session is valid, any session with at least one active request will always be considered valid. Iforg.apache.catalina.STRICT_SERVLET_COMPLIANCE
is set totrue
, the default of this setting will betrue
, else the default value will befalse
.- Specified by:
getSessionActivityCheck
in interfaceManager
- Returns:
- the flag value
-
setSessionActivityCheck
public void setSessionActivityCheck(boolean sessionActivityCheck)
Description copied from interface:Manager
Configure if Tomcat will track the number of active requests for each session. When determining if a session is valid, any session with at least one active request will always be considered valid.- Specified by:
setSessionActivityCheck
in interfaceManager
- Parameters:
sessionActivityCheck
- the new flag value
-
getSessionLastAccessAtStart
public boolean getSessionLastAccessAtStart()
Description copied from interface:Manager
If this istrue
, the last accessed time for sessions will be calculated from the beginning of the previous request. Iffalse
, the last accessed time for sessions will be calculated from the end of the previous request. This also affects how the idle time is calculated. Iforg.apache.catalina.STRICT_SERVLET_COMPLIANCE
is set totrue
, the default of this setting will betrue
, else the default value will befalse
.- Specified by:
getSessionLastAccessAtStart
in interfaceManager
- Returns:
- the flag value
-
setSessionLastAccessAtStart
public void setSessionLastAccessAtStart(boolean sessionLastAccessAtStart)
Description copied from interface:Manager
Configure if the last accessed time for sessions will be calculated from the beginning of the previous request. Iffalse
, the last accessed time for sessions will be calculated from the end of the previous request. This also affects how the idle time is calculated.- Specified by:
setSessionLastAccessAtStart
in interfaceManager
- Parameters:
sessionLastAccessAtStart
- the new flag value
-
getSessionAttributeNameFilter
public java.lang.String getSessionAttributeNameFilter()
Obtain the regular expression used to filter session attribute based on attribute name. The regular expression is anchored so it must match the entire name- Returns:
- The regular expression currently used to filter attribute names.
null
means no filter is applied. If an empty string is specified then no names will match the filter and all attributes will be blocked.
-
setSessionAttributeNameFilter
public void setSessionAttributeNameFilter(java.lang.String sessionAttributeNameFilter) throws java.util.regex.PatternSyntaxException
Set the regular expression to use to filter session attributes based on attribute name. The regular expression is anchored so it must match the entire name.- Parameters:
sessionAttributeNameFilter
- The regular expression to use to filter session attributes based on attribute name. Usenull
if no filtering is required. If an empty string is specified then no names will match the filter and all attributes will be blocked.- Throws:
java.util.regex.PatternSyntaxException
- If the expression is not valid
-
getSessionAttributeNamePattern
protected java.util.regex.Pattern getSessionAttributeNamePattern()
ProvidesgetSessionAttributeNameFilter()
as a pre-compiled regular expression pattern.- Returns:
- The pre-compiled pattern used to filter session attributes based
on attribute name.
null
means no filter is applied.
-
getSessionAttributeValueClassNameFilter
public java.lang.String getSessionAttributeValueClassNameFilter()
Obtain the regular expression used to filter session attribute based on the implementation class of the value. The regular expression is anchored and must match the fully qualified class name.- Returns:
- The regular expression currently used to filter class names.
null
means no filter is applied. If an empty string is specified then no names will match the filter and all attributes will be blocked.
-
getSessionAttributeValueClassNamePattern
protected java.util.regex.Pattern getSessionAttributeValueClassNamePattern()
ProvidesgetSessionAttributeValueClassNameFilter()
as a pre-compiled regular expression pattern.- Returns:
- The pre-compiled pattern used to filter session attributes based
on the implementation class name of the value.
null
means no filter is applied.
-
setSessionAttributeValueClassNameFilter
public void setSessionAttributeValueClassNameFilter(java.lang.String sessionAttributeValueClassNameFilter) throws java.util.regex.PatternSyntaxException
Set the regular expression to use to filter classes used for session attributes. The regular expression is anchored and must match the fully qualified class name.- Parameters:
sessionAttributeValueClassNameFilter
- The regular expression to use to filter session attributes based on class name. Usenull
if no filtering is required. If an empty string is specified then no names will match the filter and all attributes will be blocked.- Throws:
java.util.regex.PatternSyntaxException
- If the expression is not valid
-
getWarnOnSessionAttributeFilterFailure
public boolean getWarnOnSessionAttributeFilterFailure()
Should a warn level log message be generated if a session attribute is not persisted / replicated / restored.- Returns:
true
if a warn level log message should be generated
-
setWarnOnSessionAttributeFilterFailure
public void setWarnOnSessionAttributeFilterFailure(boolean warnOnSessionAttributeFilterFailure)
Configure whether or not a warn level log message should be generated if a session attribute is not persisted / replicated / restored.- Parameters:
warnOnSessionAttributeFilterFailure
-true
if the warn level message should be generated
-
getContext
public Context getContext()
Description copied from interface:Manager
Get the Context with which this Manager is associated.- Specified by:
getContext
in interfaceManager
- Returns:
- The associated Context
-
setContext
public void setContext(Context context)
Description copied from interface:Manager
Set the Context with which this Manager is associated. The Context must be set to a non-null value before the Manager is first used. Multiple calls to this method before first use are permitted. Once the Manager has been used, this method may not be used to change the Context (including setting anull
value) that the Manager is associated with.- Specified by:
setContext
in interfaceManager
- Parameters:
context
- The newly associated Context
-
getClassName
public java.lang.String getClassName()
- Returns:
- The name of the implementation class.
-
getSessionIdGenerator
public SessionIdGenerator getSessionIdGenerator()
- Specified by:
getSessionIdGenerator
in interfaceManager
- Returns:
- the session id generator
-
setSessionIdGenerator
public void setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
Description copied from interface:Manager
Sets the session id generator- Specified by:
setSessionIdGenerator
in interfaceManager
- Parameters:
sessionIdGenerator
- The session id generator
-
getName
public java.lang.String getName()
- Returns:
- The descriptive short name of this Manager implementation.
-
getSecureRandomClass
public java.lang.String getSecureRandomClass()
- Returns:
- The secure random number generator class name.
-
setSecureRandomClass
public void setSecureRandomClass(java.lang.String secureRandomClass)
Set the secure random number generator class name.- Parameters:
secureRandomClass
- The new secure random number generator class name
-
getSecureRandomAlgorithm
public java.lang.String getSecureRandomAlgorithm()
- Returns:
- The secure random number generator algorithm name.
-
setSecureRandomAlgorithm
public void setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
Set the secure random number generator algorithm name.- Parameters:
secureRandomAlgorithm
- The new secure random number generator algorithm name
-
getSecureRandomProvider
public java.lang.String getSecureRandomProvider()
- Returns:
- The secure random number generator provider name.
-
setSecureRandomProvider
public void setSecureRandomProvider(java.lang.String secureRandomProvider)
Set the secure random number generator provider name.- Parameters:
secureRandomProvider
- The new secure random number generator provider name
-
getRejectedSessions
public int getRejectedSessions()
Description copied from interface:Manager
Gets the number of sessions that were not created because the maximum number of active sessions was reached.- Specified by:
getRejectedSessions
in interfaceManager
- Returns:
- Number of rejected sessions
-
getExpiredSessions
public long getExpiredSessions()
Description copied from interface:Manager
Gets the number of sessions that have expired.- Specified by:
getExpiredSessions
in interfaceManager
- Returns:
- Number of sessions that have expired
-
setExpiredSessions
public void setExpiredSessions(long expiredSessions)
Description copied from interface:Manager
Sets the number of sessions that have expired.- Specified by:
setExpiredSessions
in interfaceManager
- Parameters:
expiredSessions
- Number of sessions that have expired
-
getProcessingTime
public long getProcessingTime()
-
setProcessingTime
public void setProcessingTime(long processingTime)
-
getProcessExpiresFrequency
public int getProcessExpiresFrequency()
- Returns:
- The frequency of manager checks.
-
setProcessExpiresFrequency
public void setProcessExpiresFrequency(int processExpiresFrequency)
Set the manager checks frequency.- Parameters:
processExpiresFrequency
- the new manager checks frequency
-
getPersistAuthentication
public boolean getPersistAuthentication()
Return whether sessions managed by this manager shall persist authentication information or not.- Returns:
true
, sessions managed by this manager shall persist authentication information;false
otherwise
-
setPersistAuthentication
public void setPersistAuthentication(boolean persistAuthentication)
Set whether sessions managed by this manager shall persist authentication information or not.- Parameters:
persistAuthentication
- iftrue
, sessions managed by this manager shall persist authentication information
-
getPersistAuthenticationNotes
@Deprecated public boolean getPersistAuthenticationNotes()
Deprecated.Will be removed in Tomcat 10.1.x where it is effectively hard-coded totrue
Return whether sessions managed by this manager shall persist authentication notes used by FORM authentication or not.- Returns:
true
, sessions managed by this manager shall persist authentication notes used by FORM authentication;false
otherwise
-
setPersistAuthenticationNotes
@Deprecated public void setPersistAuthenticationNotes(boolean persistAuthenticationNotes)
Deprecated.Will be removed in Tomcat 10.1.x where it is effectively hard-coded totrue
Set whether sessions managed by this manager shall persist authentication notes used by FORM authentication or not.- Parameters:
persistAuthenticationNotes
- iftrue
, sessions managed by this manager shall persist authentication notes used by FORM authentication
-
backgroundProcess
public void backgroundProcess()
This method will be invoked by the context/container on a periodic basis and allows the manager to implement a method that executes periodic tasks, such as expiring sessions etc.Direct call to
processExpires()
- Specified by:
backgroundProcess
in interfaceManager
-
processExpires
public void processExpires()
Invalidate all sessions that have expired.
-
initInternal
protected void initInternal() throws LifecycleException
Description copied from class:LifecycleMBeanBase
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.- Overrides:
initInternal
in classLifecycleMBeanBase
- Throws:
LifecycleException
- If the initialisation fails
-
startInternal
protected void startInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes must ensure that the state is changed toLifecycleState.STARTING
during the execution of this method. Changing state will trigger theLifecycle.START_EVENT
event. If a component fails to start it may either throw aLifecycleException
which will cause it's parent to fail to start or it can place itself in the error state in which caseLifecycleBase.stop()
will be called on the failed component but the parent component will continue to start normally.- Specified by:
startInternal
in classLifecycleBase
- Throws:
LifecycleException
- Start error occurred
-
stopInternal
protected void stopInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes must ensure that the state is changed toLifecycleState.STOPPING
during the execution of this method. Changing state will trigger theLifecycle.STOP_EVENT
event.- Specified by:
stopInternal
in classLifecycleBase
- Throws:
LifecycleException
- Stop error occurred
-
add
public void add(Session session)
Description copied from interface:Manager
Add this Session to the set of active Sessions for this Manager.
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Description copied from interface:Manager
Add a property change listener to this component.- Specified by:
addPropertyChangeListener
in interfaceManager
- Parameters:
listener
- The listener to add
-
createSession
public Session createSession(java.lang.String sessionId)
Description copied from interface:Manager
Construct and return a new session object, based on the default settings specified by this Manager's properties. The session id specified will be used as the session id. If a new session cannot be created for any reason, returnnull
.- Specified by:
createSession
in interfaceManager
- Parameters:
sessionId
- The session id which should be used to create the new session; ifnull
, the session id will be assigned by this method, and available via the getId() method of the returned session.- Returns:
- An empty Session object with the given ID or a newly created session ID if none was specified
-
createEmptySession
public Session createEmptySession()
Description copied from interface:Manager
Get a session from the recycled ones or create a new empty one. The PersistentManager manager does not need to create session data because it reads it from the Store.- Specified by:
createEmptySession
in interfaceManager
- Returns:
- An empty Session object
-
findSession
public Session findSession(java.lang.String id) throws java.io.IOException
Description copied from interface:Manager
Return the active Session, associated with this Manager, with the specified session id (if any); otherwise returnnull
.- Specified by:
findSession
in interfaceManager
- Parameters:
id
- The session id for the session to be returned- Returns:
- the request session or
null
if a session with the requested ID could not be found - Throws:
java.io.IOException
- if an input/output error occurs while processing this request
-
findSessions
public Session[] findSessions()
Description copied from interface:Manager
Return the set of active Sessions associated with this Manager. If this Manager has no active Sessions, a zero-length array is returned.- Specified by:
findSessions
in interfaceManager
- Returns:
- All the currently active sessions managed by this manager
-
remove
public void remove(Session session)
Description copied from interface:Manager
Remove this Session from the active Sessions for this Manager.
-
remove
public void remove(Session session, boolean update)
Description copied from interface:Manager
Remove this Session from the active Sessions for this Manager.
-
removePropertyChangeListener
public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Description copied from interface:Manager
Remove a property change listener from this component.- Specified by:
removePropertyChangeListener
in interfaceManager
- Parameters:
listener
- The listener to remove
-
rotateSessionId
public java.lang.String rotateSessionId(Session session)
Description copied from interface:Manager
Change the session ID of the current session to a new randomly generated session ID.- Specified by:
rotateSessionId
in interfaceManager
- Parameters:
session
- The session to change the session ID for- Returns:
- The new session ID
-
changeSessionId
public void changeSessionId(Session session, java.lang.String newId)
Description copied from interface:Manager
Change the session ID of the current session to a specified session ID.- Specified by:
changeSessionId
in interfaceManager
- Parameters:
session
- The session to change the session ID fornewId
- new session ID
-
changeSessionId
protected void changeSessionId(Session session, java.lang.String newId, boolean notifySessionListeners, boolean notifyContainerListeners)
-
willAttributeDistribute
public boolean willAttributeDistribute(java.lang.String name, java.lang.Object value)
Would the Manager distribute the given session attribute? Manager implementations may provide additional configuration options to control which attributes are distributable.This implementation excludes session attributes from distribution if the:
- attribute name matches
getSessionAttributeNameFilter()
- Specified by:
willAttributeDistribute
in interfaceManager
- Parameters:
name
- The attribute namevalue
- The attribute value- Returns:
true
if the Manager would distribute the given attribute otherwisefalse
- attribute name matches
-
getNewSession
protected StandardSession getNewSession()
Get new session class to be used in the doLoad() method.- Returns:
- a new session for use with this manager
-
generateSessionId
protected java.lang.String generateSessionId()
Generate and return a new session identifier.- Returns:
- a new session id
-
getEngine
public Engine getEngine()
Retrieve the enclosing Engine for this Manager.- Returns:
- an Engine object (or null).
-
getJvmRoute
public java.lang.String getJvmRoute()
Retrieve the JvmRoute for the enclosing Engine.- Returns:
- the JvmRoute or null.
-
setSessionCounter
public void setSessionCounter(long sessionCounter)
Description copied from interface:Manager
Sets the total number of sessions created by this manager.- Specified by:
setSessionCounter
in interfaceManager
- Parameters:
sessionCounter
- Total number of sessions created by this manager.
-
getSessionCounter
public long getSessionCounter()
Description copied from interface:Manager
Returns the total number of sessions created by this manager.- Specified by:
getSessionCounter
in interfaceManager
- Returns:
- Total number of sessions created by this manager.
-
getDuplicates
public int getDuplicates()
Number of duplicated session IDs generated by the random source. Anything bigger than 0 means problems.- Returns:
- The count of duplicates
-
setDuplicates
public void setDuplicates(int duplicates)
-
getActiveSessions
public int getActiveSessions()
Description copied from interface:Manager
Gets the number of currently active sessions.- Specified by:
getActiveSessions
in interfaceManager
- Returns:
- Number of currently active sessions
-
getMaxActive
public int getMaxActive()
Description copied from interface:Manager
Gets the maximum number of sessions that have been active at the same time.- Specified by:
getMaxActive
in interfaceManager
- Returns:
- Maximum number of sessions that have been active at the same time
-
setMaxActive
public void setMaxActive(int maxActive)
Description copied from interface:Manager
(Re)sets the maximum number of sessions that have been active at the same time.- Specified by:
setMaxActive
in interfaceManager
- Parameters:
maxActive
- Maximum number of sessions that have been active at the same time.
-
getMaxActiveSessions
public int getMaxActiveSessions()
- Returns:
- The maximum number of active Sessions allowed, or -1 for no limit.
-
setMaxActiveSessions
public void setMaxActiveSessions(int max)
Set the maximum number of active Sessions allowed, or -1 for no limit.- Parameters:
max
- The new maximum number of sessions
-
getSessionMaxAliveTime
public int getSessionMaxAliveTime()
Description copied from interface:Manager
Gets the longest time (in seconds) that an expired session had been alive.- Specified by:
getSessionMaxAliveTime
in interfaceManager
- Returns:
- Longest time (in seconds) that an expired session had been alive.
-
setSessionMaxAliveTime
public void setSessionMaxAliveTime(int sessionMaxAliveTime)
Description copied from interface:Manager
Sets the longest time (in seconds) that an expired session had been alive.- Specified by:
setSessionMaxAliveTime
in interfaceManager
- Parameters:
sessionMaxAliveTime
- Longest time (in seconds) that an expired session had been alive.
-
updateSessionMaxAliveTime
public void updateSessionMaxAliveTime(int sessionAliveTime)
Updates the sessionMaxAliveTime attribute if the candidate value is larger than the current value.- Parameters:
sessionAliveTime
- The candidate value (in seconds) for the new sessionMaxAliveTime value.
-
getSessionAverageAliveTime
public int getSessionAverageAliveTime()
Gets the average time (in seconds) that expired sessions had been alive. This may be based on sample data.Based on the last 100 sessions to expire. If less than 100 sessions have expired then all available data is used.
- Specified by:
getSessionAverageAliveTime
in interfaceManager
- Returns:
- Average time (in seconds) that expired sessions had been alive.
-
getSessionCreateRate
public int getSessionCreateRate()
Gets the current rate of session creation (in session per minute). This may be based on sample data.Based on the creation time of the previous 100 sessions created. If less than 100 sessions have been created then all available data is used.
- Specified by:
getSessionCreateRate
in interfaceManager
- Returns:
- The current rate (in sessions per minute) of session creation
-
getSessionExpireRate
public int getSessionExpireRate()
Gets the current rate of session expiration (in session per minute). This may be based on sample dataBased on the expiry time of the previous 100 sessions expired. If less than 100 sessions have expired then all available data is used.
- Specified by:
getSessionExpireRate
in interfaceManager
- Returns:
- The current rate (in sessions per minute) of session expiration
-
listSessionIds
public java.lang.String listSessionIds()
For debugging.- Returns:
- A space separated list of all session IDs currently active
-
getSessionAttribute
public java.lang.String getSessionAttribute(java.lang.String sessionId, java.lang.String key)
For debugging.- Parameters:
sessionId
- The ID for the session of interestkey
- The key for the attribute to obtain- Returns:
- The attribute value for the specified session, if found, null otherwise
-
getSession
public java.util.HashMap<java.lang.String,java.lang.String> getSession(java.lang.String sessionId)
Returns information about the session with the given session id.The session information is organized as a HashMap, mapping session attribute names to the String representation of their values.
- Parameters:
sessionId
- Session id- Returns:
- HashMap mapping session attribute names to the String representation of their values, or null if no session with the specified id exists, or if the session does not have any attributes
-
expireSession
public void expireSession(java.lang.String sessionId)
-
getThisAccessedTimestamp
public long getThisAccessedTimestamp(java.lang.String sessionId)
-
getThisAccessedTime
public java.lang.String getThisAccessedTime(java.lang.String sessionId)
-
getLastAccessedTimestamp
public long getLastAccessedTimestamp(java.lang.String sessionId)
-
getLastAccessedTime
public java.lang.String getLastAccessedTime(java.lang.String sessionId)
-
getCreationTime
public java.lang.String getCreationTime(java.lang.String sessionId)
-
getCreationTimestamp
public long getCreationTimestamp(java.lang.String sessionId)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getObjectNameKeyProperties
public java.lang.String getObjectNameKeyProperties()
Description copied from class:LifecycleMBeanBase
Allow sub-classes to specify the key properties component of theObjectName
that will be used to register this component.- Specified by:
getObjectNameKeyProperties
in classLifecycleMBeanBase
- Returns:
- The string representation of the key properties component of the
desired
ObjectName
-
getDomainInternal
public java.lang.String getDomainInternal()
Description copied from class:LifecycleMBeanBase
Method implemented by sub-classes to identify the domain in which MBeans should be registered.- Specified by:
getDomainInternal
in classLifecycleMBeanBase
- Returns:
- The name of the domain to use to register MBeans.
-
-