org.apache.catalina.ha.tcp
public class ReplicationValve extends ValveBase implements ClusterValve
Implementation of a Valve that logs interesting contents from the specified Request (before processing) and the corresponding Response (after processing). It is especially useful in debugging problems related to headers and cookies.
This Valve may be attached to any Container, depending on the granularity of the logging you wish to perform.
primaryIndicator=true, then the request attribute org.apache.catalina.ha.tcp.isPrimarySession. is set true, when request processing is at sessions primary node.
Version: $Revision: 729200 $ $Date: 2008-12-24 03:54:09 +0100 (Wed, 24 Dec 2008) $
Field Summary | |
---|---|
protected ThreadLocal | crossContextSessions
crossContext session container |
protected boolean | doProcessingStats
doProcessingStats (default = off) |
protected String | filter
Orginal filter |
protected long | lastSendTime |
protected long | nrOfCrossContextSendRequests |
protected long | nrOfFilterRequests |
protected long | nrOfRequests |
protected long | nrOfSendRequests |
protected boolean | primaryIndicator
must primary change indicator set |
protected String | primaryIndicatorName
Name of primary change indicator as request attribute |
protected Pattern[] | reqFilters
holds file endings to not call for like images and others |
protected static StringManager | sm
The StringManager for this package. |
protected long | totalRequestTime |
protected long | totalSendTime |
Constructor Summary | |
---|---|
ReplicationValve() |
Method Summary | |
---|---|
protected void | createPrimaryIndicator(Request request)
Mark Request that processed at primary node with attribute
primaryIndicatorName
|
boolean | doStatistics()
Calc processing stats |
CatalinaCluster | getCluster() |
String | getFilter() |
String | getInfo()
Return descriptive information about this Valve implementation. |
long | getLastSendTime() |
long | getNrOfCrossContextSendRequests() |
long | getNrOfFilterRequests() |
long | getNrOfRequests() |
long | getNrOfSendRequests() |
String | getPrimaryIndicatorName() |
protected Pattern[] | getReqFilters() |
long | getTotalRequestTime() |
long | getTotalSendTime() |
void | invoke(Request request, Response response)
Log the interesting request parameters, invoke the next Valve in the
sequence, and log the interesting response parameters.
|
boolean | isPrimaryIndicator() |
protected boolean | isRequestWithoutSessionChange(String uri)
is request without possible session change |
void | registerReplicationSession(DeltaSession session)
Register all cross context sessions inside endAccess.
|
protected void | resetDeltaRequest(Session session)
Reset DeltaRequest from session |
protected void | resetReplicationRequest(Request request, boolean isCrossContext)
Fix memory leak for long sessions with many changes, when no backup member exists! |
void | resetStatistics()
reset the active statitics |
protected void | send(ClusterManager manager, CatalinaCluster cluster, String sessionId)
send manager requestCompleted message to cluster |
protected void | sendCrossContextSession(CatalinaCluster containerCluster)
Send all changed cross context sessions to backups |
protected void | sendInvalidSessions(ClusterManager manager, CatalinaCluster cluster)
check for session invalidations |
protected void | sendMessage(Session session, ClusterManager manager, CatalinaCluster cluster)
Send message delta message from request session |
protected void | sendReplicationMessage(Request request, long totalstart, boolean isCrossContext, ClusterManager clusterManager, CatalinaCluster containerCluster) |
protected void | sendSessionReplicationMessage(Request request, ClusterManager manager, CatalinaCluster cluster)
Send Cluster Replication Request |
void | setCluster(CatalinaCluster cluster) |
void | setFilter(String filter)
compile filter string to regular expressions |
void | setPrimaryIndicator(boolean primaryIndicator) |
void | setPrimaryIndicatorName(String primaryIndicatorName) |
protected void | setReqFilters(Pattern[] reqFilters) |
void | setStatistics(boolean doProcessingStats)
Set Calc processing stats |
String | toString()
Return a String rendering of this object. |
protected void | updateStats(long requestTime, long clusterTime)
protocol cluster replications stats |
Parameters: request
Throws: IOException
Returns: Returns the cluster.
Returns: Returns the filter
Returns: Returns the lastSendTime.
Returns: Returns the nrOfCrossContextSendRequests.
Returns: Returns the nrOfFilterRequests.
Returns: Returns the nrOfRequests.
Returns: Returns the nrOfSendRequests.
Returns: Returns the primaryIndicatorName.
Returns: Returns the reqFilters.
Returns: Returns the totalRequestTime.
Returns: Returns the totalSendTime.
Parameters: request The servlet request to be processed response The servlet response to be created
Throws: IOException if an input/output error occurs ServletException if a servlet error occurs
Returns: Returns the primaryIndicator.
Parameters: uri The request uri
Returns: True if no session change
Parameters: session cross context session
Parameters: session HttpSession from current request or cross context session
Parameters: request current request after responce is generated isCrossContext check crosscontext threadlocal
Parameters: manager SessionManager cluster replication cluster sessionId sessionid from the manager
See Also: requestCompleted send
Parameters: containerCluster
Parameters: manager cluster
Parameters: request current request manager session manager cluster replication cluster
Parameters: request totalstart isCrossContext clusterManager containerCluster
Parameters: request current request manager session manager cluster replication cluster
Parameters: cluster The cluster to set.
Parameters: filter The filter to set.
See Also: Pattern#compile(java.lang.String)
Parameters: primaryIndicator The primaryIndicator to set.
Parameters: primaryIndicatorName The primaryIndicatorName to set.
Parameters: reqFilters The reqFilters to set.
See Also: resetStatistics
Parameters: requestTime clusterTime