public abstract class ManagerBase extends LifecycleMBeanBase implements Manager
Modifier and Type | Class and Description |
---|---|
protected static class |
ManagerBase.SessionTiming |
Lifecycle.SingleUse
Modifier and Type | Field and Description |
---|---|
protected int |
duplicates |
protected 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 String |
secureRandomAlgorithm
The name of the algorithm to use to create instances of
SecureRandom which are used to generate session IDs. |
protected String |
secureRandomClass
The Java class name of the secure random number generator class to be
used when generating session identifiers.
|
protected String |
secureRandomProvider
The name of the provider to use to create instances of
SecureRandom which are used to generate session IDs. |
protected long |
sessionCounter |
protected Deque<ManagerBase.SessionTiming> |
sessionCreationTiming |
protected Deque<ManagerBase.SessionTiming> |
sessionExpirationTiming |
protected SessionIdGenerator |
sessionIdGenerator |
protected Class<? extends SessionIdGenerator> |
sessionIdGeneratorClass |
protected int |
sessionMaxAliveTime
The longest time (in seconds) that an expired session had been alive.
|
protected Map<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 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(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)
Change the session ID of the current session to a new randomly generated
session ID.
|
void |
changeSessionId(Session session,
String newId)
Change the session ID of the current session to a specified session ID.
|
protected void |
changeSessionId(Session session,
String newId,
boolean notifySessionListeners,
boolean notifyContainerListeners) |
Session |
createEmptySession()
Get a session from the recycled ones or create a new empty one.
|
Session |
createSession(String sessionId)
Construct and return a new session object, based on the default
settings specified by this Manager's properties.
|
void |
expireSession(String sessionId) |
Session |
findSession(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 String |
generateSessionId()
Generate and return a new session identifier.
|
int |
getActiveSessions()
Gets the number of currently active sessions.
|
String |
getClassName() |
Context |
getContext()
Get the Context with which this Manager is associated.
|
String |
getCreationTime(String sessionId) |
long |
getCreationTimestamp(String sessionId) |
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.
|
String |
getJvmRoute()
Retrieve the JvmRoute for the enclosing Engine.
|
String |
getLastAccessedTime(String sessionId) |
long |
getLastAccessedTimestamp(String sessionId) |
int |
getMaxActive()
Gets the maximum number of sessions that have been active at the same
time.
|
int |
getMaxActiveSessions() |
String |
getName() |
protected StandardSession |
getNewSession()
Get new session class to be used in the doLoad() method.
|
String |
getObjectNameKeyProperties()
Allow sub-classes to specify the key properties component of the
ObjectName that will be used to register this component. |
int |
getProcessExpiresFrequency() |
long |
getProcessingTime() |
int |
getRejectedSessions()
Gets the number of sessions that were not created because the maximum
number of active sessions was reached.
|
String |
getSecureRandomAlgorithm() |
String |
getSecureRandomClass() |
String |
getSecureRandomProvider() |
HashMap<String,String> |
getSession(String sessionId)
Returns information about the session with the given session id.
|
String |
getSessionAttribute(String sessionId,
String key)
For debugging.
|
String |
getSessionAttributeNameFilter()
Obtain the regular expression used to filter session attribute based on
attribute name.
|
protected Pattern |
getSessionAttributeNamePattern()
Provides
getSessionAttributeNameFilter() as a pre-compiled
regular expression pattern. |
String |
getSessionAttributeValueClassNameFilter()
Obtain the regular expression used to filter session attribute based on
the implementation class of the value.
|
protected Pattern |
getSessionAttributeValueClassNamePattern()
Provides
getSessionAttributeValueClassNameFilter() 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() |
int |
getSessionMaxAliveTime()
Gets the longest time (in seconds) that an expired session had been
alive.
|
String |
getThisAccessedTime(String sessionId) |
long |
getThisAccessedTimestamp(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.
|
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(PropertyChangeListener listener)
Remove a property change listener from this component.
|
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 |
setProcessExpiresFrequency(int processExpiresFrequency)
Set the manager checks frequency.
|
void |
setProcessingTime(long processingTime) |
void |
setSecureRandomAlgorithm(String secureRandomAlgorithm)
Set the secure random number generator algorithm name.
|
void |
setSecureRandomClass(String secureRandomClass)
Set the secure random number generator class name.
|
void |
setSecureRandomProvider(String secureRandomProvider)
Set the secure random number generator provider name.
|
void |
setSessionAttributeNameFilter(String sessionAttributeNameFilter)
Set the regular expression to use to filter session attributes based on
attribute name.
|
void |
setSessionAttributeValueClassNameFilter(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 generator
|
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 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. |
String |
toString() |
void |
updateSessionMaxAliveTime(int sessionAliveTime)
Updates the sessionMaxAliveTime attribute if the candidate value is
larger than the current value.
|
boolean |
willAttributeDistribute(String name,
Object value)
Would the Manager distribute the given session attribute?
|
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop
protected String secureRandomClass
SecureRandom
will be
generated.protected 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 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 Class<? extends SessionIdGenerator> sessionIdGeneratorClass
protected volatile int sessionMaxAliveTime
protected static final int TIMING_STATS_CACHE_SIZE
protected final Deque<ManagerBase.SessionTiming> sessionCreationTiming
protected final Deque<ManagerBase.SessionTiming> sessionExpirationTiming
protected final AtomicLong expiredSessions
protected Map<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 PropertyChangeSupport support
public String getSessionAttributeNameFilter()
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.public void setSessionAttributeNameFilter(String sessionAttributeNameFilter) throws PatternSyntaxException
sessionAttributeNameFilter
- The regular expression to use to filter
session attributes based on attribute name. Use null
if no
filtering is required. If an empty string is specified then no
names will match the filter and all attributes will be blocked.PatternSyntaxException
- If the expression is not validprotected Pattern getSessionAttributeNamePattern()
getSessionAttributeNameFilter()
as a pre-compiled
regular expression pattern.null
means no filter is applied.public String getSessionAttributeValueClassNameFilter()
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.protected Pattern getSessionAttributeValueClassNamePattern()
getSessionAttributeValueClassNameFilter()
as a
pre-compiled regular expression pattern.null
means
no filter is applied.public void setSessionAttributeValueClassNameFilter(String sessionAttributeValueClassNameFilter) throws PatternSyntaxException
sessionAttributeValueClassNameFilter
- The regular expression to use
to filter session attributes based on class name. Use null
if no filtering is required. If an empty string is
specified then no names will match the filter and all
attributes will be blocked.PatternSyntaxException
- If the expression is not validpublic boolean getWarnOnSessionAttributeFilterFailure()
true
if a warn level log message should be generatedpublic void setWarnOnSessionAttributeFilterFailure(boolean warnOnSessionAttributeFilterFailure)
warnOnSessionAttributeFilterFailure
- true
if the
warn level message should be generatedpublic Context getContext()
Manager
getContext
in interface Manager
public void setContext(Context context)
Manager
null
value) that the Manager is associated with.setContext
in interface Manager
context
- The newly associated Contextpublic String getClassName()
public SessionIdGenerator getSessionIdGenerator()
getSessionIdGenerator
in interface Manager
public void setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
Manager
setSessionIdGenerator
in interface Manager
sessionIdGenerator
- The session id generatorpublic String getName()
public String getSecureRandomClass()
public void setSecureRandomClass(String secureRandomClass)
secureRandomClass
- The new secure random number generator class
namepublic String getSecureRandomAlgorithm()
public void setSecureRandomAlgorithm(String secureRandomAlgorithm)
secureRandomAlgorithm
- The new secure random number generator
algorithm namepublic String getSecureRandomProvider()
public void setSecureRandomProvider(String secureRandomProvider)
secureRandomProvider
- The new secure random number generator
provider namepublic int getRejectedSessions()
Manager
getRejectedSessions
in interface Manager
public long getExpiredSessions()
Manager
getExpiredSessions
in interface Manager
public void setExpiredSessions(long expiredSessions)
Manager
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()
Direct call to processExpires()
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
- Start error occurredprotected 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
- Stop error occurredpublic void add(Session session)
Manager
public void addPropertyChangeListener(PropertyChangeListener listener)
Manager
addPropertyChangeListener
in interface Manager
listener
- The listener to addpublic Session createSession(String sessionId)
Manager
null
.createSession
in interface Manager
sessionId
- The session id which should be used to create the
new session; if null
, the session
id will be assigned by this method, and available via the getId()
method of the returned session.public Session createEmptySession()
Manager
createEmptySession
in interface Manager
public Session findSession(String id) throws IOException
Manager
null
.findSession
in interface Manager
id
- The session id for the session to be returnednull
if a session with the
requested ID could not be foundIOException
- if an input/output error occurs while
processing this requestpublic Session[] findSessions()
Manager
findSessions
in interface Manager
public void remove(Session session)
Manager
public void remove(Session session, boolean update)
Manager
public void removePropertyChangeListener(PropertyChangeListener listener)
Manager
removePropertyChangeListener
in interface Manager
listener
- The listener to removepublic void changeSessionId(Session session)
Manager
changeSessionId
in interface Manager
session
- The session to change the session ID forpublic void changeSessionId(Session session, String newId)
Manager
changeSessionId
in interface Manager
session
- The session to change the session ID fornewId
- new session IDprotected void changeSessionId(Session session, String newId, boolean notifySessionListeners, boolean notifyContainerListeners)
public boolean willAttributeDistribute(String name, Object value)
This implementation excludes session attributes from distribution if the:
getSessionAttributeNameFilter()
willAttributeDistribute
in interface Manager
name
- The attribute namevalue
- The attribute valuetrue
if the Manager would distribute the given attribute
otherwise false
protected StandardSession getNewSession()
protected String generateSessionId()
public Engine getEngine()
public String getJvmRoute()
public void setSessionCounter(long sessionCounter)
Manager
setSessionCounter
in interface Manager
sessionCounter
- Total number of sessions created by this manager.public long getSessionCounter()
Manager
getSessionCounter
in interface Manager
public int getDuplicates()
public void setDuplicates(int duplicates)
public int getActiveSessions()
Manager
getActiveSessions
in interface Manager
public int getMaxActive()
Manager
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()
Manager
getSessionMaxAliveTime
in interface Manager
public void setSessionMaxAliveTime(int sessionMaxAliveTime)
Manager
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()
Based on the last 100 sessions to expire. If less than 100 sessions have expired then all available data is used.
getSessionAverageAliveTime
in interface Manager
public int getSessionCreateRate()
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.
getSessionCreateRate
in interface Manager
public int getSessionExpireRate()
Based on the expiry time of the previous 100 sessions expired. If less than 100 sessions have expired then all available data is used.
getSessionExpireRate
in interface Manager
public String listSessionIds()
public String getSessionAttribute(String sessionId, String key)
sessionId
- The ID for the session of interestkey
- The key for the attribute to obtainpublic HashMap<String,String> getSession(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(String sessionId)
public long getThisAccessedTimestamp(String sessionId)
public long getLastAccessedTimestamp(String sessionId)
public long getCreationTimestamp(String sessionId)
public String getObjectNameKeyProperties()
LifecycleMBeanBase
ObjectName
that will be used to register this component.getObjectNameKeyProperties
in class LifecycleMBeanBase
ObjectName
public String getDomainInternal()
LifecycleMBeanBase
getDomainInternal
in class LifecycleMBeanBase
Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.