public abstract class ManagerBase extends LifecycleMBeanBase implements Manager, java.beans.PropertyChangeListener
Modifier and Type | Class and Description |
---|---|
protected static class |
ManagerBase.SessionTiming |
Modifier and Type | Field and Description |
---|---|
protected Container |
container
The Container with which this Manager is associated.
|
protected boolean |
distributable
The distributable flag for Sessions created by this Manager.
|
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 |
maxInactiveInterval
The default maximum inactive interval for Sessions created by
this Manager.
|
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 of
SecureRandom 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 of
SecureRandom which are used to generate session IDs. |
protected static int |
SESSION_ID_LENGTH_UNSET |
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 |
sessionIdLength
The session id length of Sessions created by this Manager.
|
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 |
mserver
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 and Description |
---|
ManagerBase() |
Modifier and Type | Method and 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()
Implements the Manager interface, direct call to processExpires
|
void |
changeSessionId(Session session)
Change the session ID of the current session to a new randomly generated
session ID.
|
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 return
null . |
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()
Returns the number of active sessions
|
java.lang.String |
getClassName()
Returns the name of the implementation class.
|
Container |
getContainer()
Return the Container with which this Manager is associated.
|
java.lang.String |
getCreationTime(java.lang.String sessionId) |
long |
getCreationTimestamp(java.lang.String sessionId) |
boolean |
getDistributable()
Return the distributable flag for the sessions supported by
this Manager.
|
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 |
getInfo()
Return descriptive information about this Manager implementation and
the corresponding version number, in the format
<description>/<version> . |
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()
Max number of concurrent active sessions
|
int |
getMaxActiveSessions()
Return the maximum number of active Sessions allowed, or -1 for
no limit.
|
int |
getMaxInactiveInterval()
Return the default maximum inactive interval (in seconds)
for Sessions created by this Manager.
|
java.lang.String |
getName()
Return the descriptive short name of this Manager implementation.
|
protected StandardSession |
getNewSession()
Get new session class to be used in the doLoad() method.
|
java.lang.String |
getObjectNameKeyProperties()
Allow sub-classes to specify the key properties component of the
ObjectName that will be used to register this component. |
int |
getProcessExpiresFrequency()
Return the frequency of manager checks.
|
long |
getProcessingTime() |
int |
getRejectedSessions()
Number of session creations that failed due to maxActiveSessions
|
java.lang.String |
getSecureRandomAlgorithm()
Return the secure random number generator algorithm name.
|
java.lang.String |
getSecureRandomClass()
Return the secure random number generator class name.
|
java.lang.String |
getSecureRandomProvider()
Return the secure random number generator provider name.
|
java.util.HashMap<java.lang.String,java.lang.String> |
getSession(java.lang.String sessionId)
Returns information about the session with the given session id.
|
java.lang.String |
getSessionAttribute(java.lang.String sessionId,
java.lang.String key)
For debugging: get a session attribute
|
int |
getSessionAverageAliveTime()
Gets the average time (in seconds) that expired sessions had been
alive based on the last 100 sessions to expire.
|
long |
getSessionCounter()
Total sessions created by this manager.
|
int |
getSessionCreateRate()
Gets the current rate of session creation (in session per minute) based
on the creation time of the previous 100 sessions created.
|
int |
getSessionExpireRate()
Gets the current rate of session expiration (in session per minute) based
on the expiry time of the previous 100 sessions expired.
|
SessionIdGenerator |
getSessionIdGenerator()
Gets the session id generator.
|
int |
getSessionIdLength()
Deprecated.
Use
SessionIdGenerator.getSessionIdLength() .
This method will be removed in Tomcat 9 onwards. |
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) |
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: return a list of all session ids currently active
|
void |
processExpires()
Invalidate all sessions that have expired.
|
void |
propertyChange(java.beans.PropertyChangeEvent event)
Process property change events from our associated Context.
|
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.
|
void |
setContainer(Container container)
Set the Container with which this Manager is associated.
|
void |
setDistributable(boolean distributable)
Set the distributable flag for the sessions supported by this
Manager.
|
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 |
setMaxInactiveInterval(int interval)
Set the default maximum inactive interval (in seconds)
for Sessions created by this Manager.
|
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 |
setSessionCounter(long sessionCounter)
Sets the total number of sessions created by this manager.
|
void |
setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
Sets the session id generator
|
void |
setSessionIdLength(int idLength)
Deprecated.
Use
SessionIdGenerator.setSessionIdLength(int) .
This method will be removed in Tomcat 9 onwards. |
void |
setSessionMaxAliveTime(int sessionMaxAliveTime)
Sets the longest time (in seconds) that an expired session had been
alive.
|
protected void |
startInternal()
Sub-classes must ensure that the state is changed to
LifecycleState.STARTING during the execution of this method. |
protected void |
stopInternal()
Sub-classes must ensure that the state is changed to
LifecycleState.STOPPING during the execution of this method. |
java.lang.String |
toString()
Return a String rendering of this object.
|
void |
updateSessionMaxAliveTime(int sessionAliveTime)
Updates the sessionMaxAliveTime attribute if the candidate value is
larger than the current value.
|
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop
protected Container container
protected boolean distributable
true
, any user attributes added to a
session controlled by this Manager must be Serializable.protected int maxInactiveInterval
protected static final int SESSION_ID_LENGTH_UNSET
protected int sessionIdLength
protected java.lang.String secureRandomClass
SecureRandom
will be
generated.protected java.lang.String secureRandomAlgorithm
SecureRandom
which are used to generate session IDs.
If no algorithm is specified, SHA1PRNG is 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.protected java.lang.String secureRandomProvider
SecureRandom
which are used to generate session IDs.
If no algorithm is specified the of SHA1PRNG 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.protected SessionIdGenerator sessionIdGenerator
protected java.lang.Class<? extends SessionIdGenerator> sessionIdGeneratorClass
protected volatile int sessionMaxAliveTime
protected static final int TIMING_STATS_CACHE_SIZE
protected final java.util.Deque<ManagerBase.SessionTiming> sessionCreationTiming
protected final java.util.Deque<ManagerBase.SessionTiming> sessionExpirationTiming
protected final java.util.concurrent.atomic.AtomicLong expiredSessions
protected java.util.Map<java.lang.String,Session> sessions
protected long sessionCounter
protected volatile int maxActive
protected int maxActiveSessions
protected int rejectedSessions
protected volatile int duplicates
protected long processingTime
protected int processExpiresFrequency
protected static final StringManager sm
protected final java.beans.PropertyChangeSupport support
public Container getContainer()
getContainer
in interface Manager
public void setContainer(Container container)
setContainer
in interface Manager
container
- The newly associated Containerpublic java.lang.String getClassName()
public boolean getDistributable()
getDistributable
in interface Manager
public void setDistributable(boolean distributable)
setDistributable
in interface Manager
distributable
- The new distributable flagpublic java.lang.String getInfo()
<description>/<version>
.public int getMaxInactiveInterval()
getMaxInactiveInterval
in interface Manager
public void setMaxInactiveInterval(int interval)
setMaxInactiveInterval
in interface Manager
interval
- The new default value@Deprecated public int getSessionIdLength()
SessionIdGenerator.getSessionIdLength()
.
This method will be removed in Tomcat 9 onwards.getSessionIdLength
in interface Manager
@Deprecated public void setSessionIdLength(int idLength)
SessionIdGenerator.setSessionIdLength(int)
.
This method will be removed in Tomcat 9 onwards.setSessionIdLength
in interface Manager
idLength
- The session id lengthpublic SessionIdGenerator getSessionIdGenerator()
public void setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
sessionIdGenerator
- The session id generatorpublic java.lang.String getName()
public java.lang.String getSecureRandomClass()
public void setSecureRandomClass(java.lang.String secureRandomClass)
secureRandomClass
- The new secure random number generator class
namepublic java.lang.String getSecureRandomAlgorithm()
public void setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
secureRandomAlgorithm
- The new secure random number generator
algorithm namepublic java.lang.String getSecureRandomProvider()
public void setSecureRandomProvider(java.lang.String secureRandomProvider)
secureRandomProvider
- The new secure random number generator
provider namepublic int getRejectedSessions()
getRejectedSessions
in interface Manager
public long getExpiredSessions()
getExpiredSessions
in interface Manager
public void setExpiredSessions(long expiredSessions)
setExpiredSessions
in interface Manager
expiredSessions
- Number of sessions that have expiredpublic long getProcessingTime()
public void setProcessingTime(long processingTime)
public int getProcessExpiresFrequency()
public void setProcessExpiresFrequency(int processExpiresFrequency)
processExpiresFrequency
- the new manager checks frequencypublic void backgroundProcess()
backgroundProcess
in interface Manager
public void processExpires()
protected void initInternal() throws LifecycleException
LifecycleMBeanBase
initInternal
in class LifecycleMBeanBase
LifecycleException
protected void startInternal() throws LifecycleException
LifecycleBase
LifecycleState.STARTING
during the execution of this method.
Changing state will trigger the Lifecycle.START_EVENT
event.
If a component fails to start it may either throw a
LifecycleException
which will cause it's parent to fail to start
or it can place itself in the error state in which case LifecycleBase.stop()
will be called on the failed component but the parent component will
continue to start normally.startInternal
in class LifecycleBase
LifecycleException
protected void stopInternal() throws LifecycleException
LifecycleBase
LifecycleState.STOPPING
during the execution of this method.
Changing state will trigger the Lifecycle.STOP_EVENT
event.stopInternal
in class LifecycleBase
LifecycleException
public void add(Session session)
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
addPropertyChangeListener
in interface Manager
listener
- The listener to addpublic Session createSession(java.lang.String sessionId)
null
.createSession
in interface Manager
sessionId
- The session id which should be used to create the
new session; if null
, a new session id will be
generatedjava.lang.IllegalStateException
- if a new session cannot be
instantiated for any reasonpublic Session createEmptySession()
createEmptySession
in interface Manager
public Session findSession(java.lang.String id) throws java.io.IOException
null
.findSession
in interface Manager
id
- The session id for the session to be returnedjava.lang.IllegalStateException
- if a new session cannot be
instantiated for any reasonjava.io.IOException
- if an input/output error occurs while
processing this requestpublic Session[] findSessions()
findSessions
in interface Manager
public void remove(Session session)
public void remove(Session session, boolean update)
public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
removePropertyChangeListener
in interface Manager
listener
- The listener to removepublic void changeSessionId(Session session)
changeSessionId
in interface Manager
session
- The session to change the session ID forprotected StandardSession getNewSession()
protected java.lang.String generateSessionId()
public Engine getEngine()
public java.lang.String getJvmRoute()
public void setSessionCounter(long sessionCounter)
Manager
setSessionCounter
in interface Manager
sessionCounter
- Total number of sessions created by this manager.public long getSessionCounter()
getSessionCounter
in interface Manager
public int getDuplicates()
public void setDuplicates(int duplicates)
public int getActiveSessions()
getActiveSessions
in interface Manager
public int getMaxActive()
getMaxActive
in interface Manager
public void setMaxActive(int maxActive)
Manager
setMaxActive
in interface Manager
maxActive
- Maximum number of sessions that have been active at
the same time.public int getMaxActiveSessions()
public void setMaxActiveSessions(int max)
max
- The new maximum number of sessionspublic int getSessionMaxAliveTime()
getSessionMaxAliveTime
in interface Manager
public void setSessionMaxAliveTime(int sessionMaxAliveTime)
setSessionMaxAliveTime
in interface Manager
sessionMaxAliveTime
- Longest time (in seconds) that an expired
session had been alive.public void updateSessionMaxAliveTime(int sessionAliveTime)
sessionAliveTime
- The candidate value (in seconds) for the new
sessionMaxAliveTime value.public int getSessionAverageAliveTime()
getSessionAverageAliveTime
in interface Manager
public int getSessionCreateRate()
getSessionCreateRate
in interface Manager
public int getSessionExpireRate()
getSessionExpireRate
in interface Manager
public java.lang.String listSessionIds()
public java.lang.String getSessionAttribute(java.lang.String sessionId, java.lang.String key)
sessionId
- key
- public java.util.HashMap<java.lang.String,java.lang.String> getSession(java.lang.String sessionId)
The session information is organized as a HashMap, mapping session attribute names to the String representation of their values.
sessionId
- Session idpublic void expireSession(java.lang.String sessionId)
public long getThisAccessedTimestamp(java.lang.String sessionId)
public java.lang.String getThisAccessedTime(java.lang.String sessionId)
public long getLastAccessedTimestamp(java.lang.String sessionId)
public java.lang.String getLastAccessedTime(java.lang.String sessionId)
public java.lang.String getCreationTime(java.lang.String sessionId)
public long getCreationTimestamp(java.lang.String sessionId)
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String getObjectNameKeyProperties()
LifecycleMBeanBase
ObjectName
that will be used to register this component.getObjectNameKeyProperties
in class LifecycleMBeanBase
ObjectName
public java.lang.String getDomainInternal()
LifecycleMBeanBase
getDomainInternal
in class LifecycleMBeanBase
public void propertyChange(java.beans.PropertyChangeEvent event)
propertyChange
in interface java.beans.PropertyChangeListener
event
- The property change event that has occurredCopyright © 2000-2015 Apache Software Foundation. All Rights Reserved.