org.apache.catalina.ha.session
public class SimpleTcpReplicationManager extends StandardManager implements ClusterManager
Modifier and Type | Field and Description |
---|---|
protected CatalinaCluster |
cluster |
protected boolean |
defaultMode |
protected boolean |
distributable |
protected java.util.HashMap |
invalidatedSessions |
static Log |
log |
protected java.lang.String |
mChannelConfig |
protected boolean |
mChannelStarted |
protected boolean |
mExpireSessionsOnShutdown
Set to true if we don't want the sessions to expire on shutdown
|
protected java.lang.String |
mGroupName |
protected boolean |
mManagerRunning |
protected boolean |
mPrintToScreen |
protected java.lang.String |
name |
protected boolean |
stateTransferred
Flag to keep track if the state has been transferred or not
Assumes false.
|
protected boolean |
synchronousReplication
Use synchronous rather than asynchronous replication.
|
protected boolean |
useDirtyFlag |
info, lifecycle, maxActiveSessions, pathname, processingTime, rejectedSessions, started
algorithm, container, DEFAULT_ALGORITHM, devRandomSource, digest, domain, duplicates, entropy, expiredSessions, initialized, maxActive, maxInactiveInterval, mserver, oname, processExpiresFrequency, random, randomClass, randomIS, sessionAverageAliveTime, sessionCounter, sessionIdLength, sessionMaxAliveTime, sessions, sm, support
AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, DESTROY_EVENT, INIT_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
Constructor and Description |
---|
SimpleTcpReplicationManager()
Constructor, just calls super()
|
Modifier and Type | Method and Description |
---|---|
ClusterManager |
cloneFromTemplate() |
Session |
createSession(java.lang.String sessionId)
Construct and return a new session object, based on the default
settings specified by this Manager's properties.
|
protected Session |
createSession(java.lang.String sessionId,
boolean notify,
boolean setId)
Creates a HTTP session.
|
boolean |
doDomainReplication() |
CatalinaCluster |
getCluster() |
boolean |
getDistributable()
Return the distributable flag for the sessions supported by
this Manager.
|
boolean |
getExpireSessionsOnShutdown() |
java.lang.String[] |
getInvalidatedSessions()
When the manager expires session not tied to a request.
|
java.lang.String |
getName()
Return the descriptive short name of this Manager implementation.
|
ReplicationStream |
getReplicationStream(byte[] data)
Open Stream and use correct ClassLoader (Container) Switch
ThreadClassLoader
|
ReplicationStream |
getReplicationStream(byte[] data,
int offset,
int length) |
boolean |
isDefaultMode() |
boolean |
isManagerRunning() |
boolean |
isNotifyListenersOnReplication() |
boolean |
isStateTransferred() |
void |
messageDataReceived(ClusterMessage cmsg)
A message was received from another node, this
is the callback method to implement if you are interested in
receiving replication messages.
|
protected void |
messageReceived(SessionMessage msg,
Member sender)
This method is called by the received thread when a SessionMessage has
been received from one of the other nodes in the cluster.
|
protected Session |
readSession(byte[] data,
java.lang.String sessionId)
Reinstantiates a serialized session from the data passed in.
|
ClusterMessage |
requestCompleted(java.lang.String sessionId)
When the request has been completed, the replication valve
will notify the manager, and the manager will decide whether
any replication is needed or not.
|
void |
sessionInvalidated(java.lang.String sessionId) |
void |
setCluster(CatalinaCluster cluster) |
void |
setDefaultMode(boolean defaultMode) |
void |
setDistributable(boolean dist)
Set the distributable flag for the sessions supported by this
Manager.
|
void |
setDomainReplication(boolean sendClusterDomainOnly) |
void |
setExpireSessionsOnShutdown(boolean expireSessionsOnShutdown) |
void |
setName(java.lang.String name)
Set the name of the manager, at host /context name and at engine hostname+/context
|
void |
setNotifyListenersOnReplication(boolean notifyListenersOnReplication) |
void |
setPrintToScreen(boolean printtoscreen) |
void |
setSynchronousReplication(boolean flag) |
void |
setUseDirtyFlag(boolean usedirtyflag) |
void |
start()
Prepare for the beginning of active use of the public methods of this
component.
|
void |
stop()
Gracefully terminate the active use of the public methods of this
component.
|
void |
unload()
Override persistence since they don't go hand in hand with replication for now.
|
protected byte[] |
writeSession(Session session)
Serialize a session into a byte array
This method simple calls the writeObjectData method on the session and returns the byte data from that call |
addLifecycleListener, doLoad, doUnload, file, findLifecycleListeners, getInfo, getMaxActiveSessions, getPathname, getRejectedSessions, load, propertyChange, removeLifecycleListener, setContainer, setMaxActiveSessions, setPathname, setRejectedSessions
add, addPropertyChangeListener, backgroundProcess, changeSessionId, createEmptySession, createSession, destroy, expireSession, findSession, findSessions, generateSessionId, getActiveSessions, getAlgorithm, getClassName, getContainer, getCreationTime, getCreationTimestamp, getDigest, getDomain, getDuplicates, getEngine, getEntropy, getExpiredSessions, getJvmRoute, getLastAccessedTime, getLastAccessedTimestamp, getMaxActive, getMaxInactiveInterval, getNewSession, getObjectName, getProcessExpiresFrequency, getProcessingTime, getRandom, getRandomBytes, getRandomClass, getRandomFile, getSession, getSessionAttribute, getSessionAverageAliveTime, getSessionCounter, getSessionIdLength, getSessionMaxAliveTime, init, listSessionIds, postDeregister, postRegister, preDeregister, preRegister, processExpires, remove, removePropertyChangeListener, setAlgorithm, setDuplicates, setEntropy, setExpiredSessions, setMaxActive, setMaxInactiveInterval, setProcessExpiresFrequency, setProcessingTime, setRandomClass, setRandomFile, setSessionAverageAliveTime, setSessionCounter, setSessionIdLength, setSessionMaxAliveTime
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
add, addPropertyChangeListener, backgroundProcess, changeSessionId, createEmptySession, createSession, findSession, findSessions, getActiveSessions, getContainer, getExpiredSessions, getInfo, getMaxActive, getMaxInactiveInterval, getRejectedSessions, getSessionAverageAliveTime, getSessionCounter, getSessionIdLength, getSessionMaxAliveTime, load, remove, removePropertyChangeListener, setContainer, setExpiredSessions, setMaxActive, setMaxInactiveInterval, setRejectedSessions, setSessionAverageAliveTime, setSessionCounter, setSessionIdLength, setSessionMaxAliveTime
public static Log log
protected java.lang.String mChannelConfig
protected java.lang.String mGroupName
protected boolean mChannelStarted
protected boolean mPrintToScreen
protected boolean defaultMode
protected boolean mManagerRunning
protected boolean synchronousReplication
protected boolean mExpireSessionsOnShutdown
protected boolean useDirtyFlag
protected java.lang.String name
protected boolean distributable
protected CatalinaCluster cluster
protected java.util.HashMap invalidatedSessions
protected boolean stateTransferred
public SimpleTcpReplicationManager()
public boolean doDomainReplication()
doDomainReplication
in interface ClusterManager
public void setDomainReplication(boolean sendClusterDomainOnly)
setDomainReplication
in interface ClusterManager
sendClusterDomainOnly
- The sendClusterDomainOnly to set.public boolean isDefaultMode()
isDefaultMode
in interface ClusterManager
public void setDefaultMode(boolean defaultMode)
setDefaultMode
in interface ClusterManager
defaultMode
- The defaultMode to set.public boolean isManagerRunning()
public void setUseDirtyFlag(boolean usedirtyflag)
public void setExpireSessionsOnShutdown(boolean expireSessionsOnShutdown)
public void setCluster(CatalinaCluster cluster)
setCluster
in interface ClusterManager
public boolean getExpireSessionsOnShutdown()
public void setPrintToScreen(boolean printtoscreen)
public void setSynchronousReplication(boolean flag)
public void unload() throws java.io.IOException
unload
in interface Manager
unload
in class StandardManager
java.io.IOException
- if an input/output error occursprotected Session createSession(java.lang.String sessionId, boolean notify, boolean setId)
notify
- - if set to true the other nodes in the cluster will be notified.
This flag is needed so that we can create a session before we deserialize
a replicated oneReplicatedSession
public Session createSession(java.lang.String sessionId)
null
.createSession
in interface Manager
createSession
in class StandardManager
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 void sessionInvalidated(java.lang.String sessionId)
public java.lang.String[] getInvalidatedSessions()
ClusterManager
getInvalidatedSessions
in interface ClusterManager
public ClusterMessage requestCompleted(java.lang.String sessionId)
ClusterManager
requestCompleted
in interface ClusterManager
sessionId
- - the sessionId that just completed.protected byte[] writeSession(Session session)
session
- - the session to be serializedpublic ReplicationStream getReplicationStream(byte[] data) throws java.io.IOException
getReplicationStream
in interface ClusterManager
data
- java.io.IOException
public ReplicationStream getReplicationStream(byte[] data, int offset, int length) throws java.io.IOException
getReplicationStream
in interface ClusterManager
java.io.IOException
protected Session readSession(byte[] data, java.lang.String sessionId)
data
- - a byte array containing session datapublic java.lang.String getName()
StandardManager
getName
in interface ClusterManager
getName
in class StandardManager
public void start() throws LifecycleException
configure()
,
and before any of the public methods of the component are utilized.start
in interface Lifecycle
start
in class StandardManager
java.lang.IllegalStateException
- if this component has already been
startedLifecycleException
- if this component detects a fatal error
that prevents this component from being usedpublic void stop() throws LifecycleException
stop
in interface Lifecycle
stop
in class StandardManager
java.lang.IllegalStateException
- if this component has not been startedLifecycleException
- if this component detects a fatal error
that needs to be reportedpublic void setDistributable(boolean dist)
ManagerBase
setDistributable
in interface Manager
setDistributable
in class ManagerBase
dist
- The new distributable flagpublic boolean getDistributable()
ManagerBase
getDistributable
in interface Manager
getDistributable
in class ManagerBase
protected void messageReceived(SessionMessage msg, Member sender)
msg
- - the message receivedsender
- - the sender of the message, this is used if we receive a
EVT_GET_ALL_SESSION message, so that we only reply to
the requesting nodepublic void messageDataReceived(ClusterMessage cmsg)
ClusterManager
messageDataReceived
in interface ClusterManager
cmsg
- - the message received.public boolean isStateTransferred()
public void setName(java.lang.String name)
ClusterManager
setName
in interface ClusterManager
public boolean isNotifyListenersOnReplication()
isNotifyListenersOnReplication
in interface ClusterManager
public void setNotifyListenersOnReplication(boolean notifyListenersOnReplication)
public CatalinaCluster getCluster()
getCluster
in interface ClusterManager
public ClusterManager cloneFromTemplate()
cloneFromTemplate
in interface ClusterManager
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.