org.apache.catalina.ha.tcp

Class ReplicationValve

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) $

Author: Craig R. McClanahan Filip Hanik Peter Rossbach

Field Summary
protected ThreadLocalcrossContextSessions
crossContext session container
protected booleandoProcessingStats
doProcessingStats (default = off)
protected Stringfilter
Orginal filter
protected longlastSendTime
protected longnrOfCrossContextSendRequests
protected longnrOfFilterRequests
protected longnrOfRequests
protected longnrOfSendRequests
protected booleanprimaryIndicator
must primary change indicator set
protected StringprimaryIndicatorName
Name of primary change indicator as request attribute
protected Pattern[]reqFilters
holds file endings to not call for like images and others
protected static StringManagersm
The StringManager for this package.
protected longtotalRequestTime
protected longtotalSendTime
Constructor Summary
ReplicationValve()
Method Summary
protected voidcreatePrimaryIndicator(Request request)
Mark Request that processed at primary node with attribute primaryIndicatorName
booleandoStatistics()
Calc processing stats
CatalinaClustergetCluster()
StringgetFilter()
StringgetInfo()
Return descriptive information about this Valve implementation.
longgetLastSendTime()
longgetNrOfCrossContextSendRequests()
longgetNrOfFilterRequests()
longgetNrOfRequests()
longgetNrOfSendRequests()
StringgetPrimaryIndicatorName()
protected Pattern[]getReqFilters()
longgetTotalRequestTime()
longgetTotalSendTime()
voidinvoke(Request request, Response response)
Log the interesting request parameters, invoke the next Valve in the sequence, and log the interesting response parameters.
booleanisPrimaryIndicator()
protected booleanisRequestWithoutSessionChange(String uri)
is request without possible session change
voidregisterReplicationSession(DeltaSession session)
Register all cross context sessions inside endAccess.
protected voidresetDeltaRequest(Session session)
Reset DeltaRequest from session
protected voidresetReplicationRequest(Request request, boolean isCrossContext)
Fix memory leak for long sessions with many changes, when no backup member exists!
voidresetStatistics()
reset the active statitics
protected voidsend(ClusterManager manager, CatalinaCluster cluster, String sessionId)
send manager requestCompleted message to cluster
protected voidsendCrossContextSession(CatalinaCluster containerCluster)
Send all changed cross context sessions to backups
protected voidsendInvalidSessions(ClusterManager manager, CatalinaCluster cluster)
check for session invalidations
protected voidsendMessage(Session session, ClusterManager manager, CatalinaCluster cluster)
Send message delta message from request session
protected voidsendReplicationMessage(Request request, long totalstart, boolean isCrossContext, ClusterManager clusterManager, CatalinaCluster containerCluster)
protected voidsendSessionReplicationMessage(Request request, ClusterManager manager, CatalinaCluster cluster)
Send Cluster Replication Request
voidsetCluster(CatalinaCluster cluster)
voidsetFilter(String filter)
compile filter string to regular expressions
voidsetPrimaryIndicator(boolean primaryIndicator)
voidsetPrimaryIndicatorName(String primaryIndicatorName)
protected voidsetReqFilters(Pattern[] reqFilters)
voidsetStatistics(boolean doProcessingStats)
Set Calc processing stats
StringtoString()
Return a String rendering of this object.
protected voidupdateStats(long requestTime, long clusterTime)
protocol cluster replications stats

Field Detail

crossContextSessions

protected ThreadLocal crossContextSessions
crossContext session container

doProcessingStats

protected boolean doProcessingStats
doProcessingStats (default = off)

filter

protected String filter
Orginal filter

lastSendTime

protected long lastSendTime

nrOfCrossContextSendRequests

protected long nrOfCrossContextSendRequests

nrOfFilterRequests

protected long nrOfFilterRequests

nrOfRequests

protected long nrOfRequests

nrOfSendRequests

protected long nrOfSendRequests

primaryIndicator

protected boolean primaryIndicator
must primary change indicator set

primaryIndicatorName

protected String primaryIndicatorName
Name of primary change indicator as request attribute

reqFilters

protected Pattern[] reqFilters
holds file endings to not call for like images and others

sm

protected static StringManager sm
The StringManager for this package.

totalRequestTime

protected long totalRequestTime

totalSendTime

protected long totalSendTime

Constructor Detail

ReplicationValve

public ReplicationValve()

Method Detail

createPrimaryIndicator

protected void createPrimaryIndicator(Request request)
Mark Request that processed at primary node with attribute primaryIndicatorName

Parameters: request

Throws: IOException

doStatistics

public boolean doStatistics()
Calc processing stats

getCluster

public CatalinaCluster getCluster()

Returns: Returns the cluster.

getFilter

public String getFilter()

Returns: Returns the filter

getInfo

public String getInfo()
Return descriptive information about this Valve implementation.

getLastSendTime

public long getLastSendTime()

Returns: Returns the lastSendTime.

getNrOfCrossContextSendRequests

public long getNrOfCrossContextSendRequests()

Returns: Returns the nrOfCrossContextSendRequests.

getNrOfFilterRequests

public long getNrOfFilterRequests()

Returns: Returns the nrOfFilterRequests.

getNrOfRequests

public long getNrOfRequests()

Returns: Returns the nrOfRequests.

getNrOfSendRequests

public long getNrOfSendRequests()

Returns: Returns the nrOfSendRequests.

getPrimaryIndicatorName

public String getPrimaryIndicatorName()

Returns: Returns the primaryIndicatorName.

getReqFilters

protected Pattern[] getReqFilters()

Returns: Returns the reqFilters.

getTotalRequestTime

public long getTotalRequestTime()

Returns: Returns the totalRequestTime.

getTotalSendTime

public long getTotalSendTime()

Returns: Returns the totalSendTime.

invoke

public void invoke(Request request, Response response)
Log the interesting request parameters, invoke the next Valve in the sequence, and log the interesting response parameters.

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

isPrimaryIndicator

public boolean isPrimaryIndicator()

Returns: Returns the primaryIndicator.

isRequestWithoutSessionChange

protected boolean isRequestWithoutSessionChange(String uri)
is request without possible session change

Parameters: uri The request uri

Returns: True if no session change

registerReplicationSession

public void registerReplicationSession(DeltaSession session)
Register all cross context sessions inside endAccess. Use a list with contains check, that the Portlet API can include a lot of fragments from same or different applications with session changes.

Parameters: session cross context session

resetDeltaRequest

protected void resetDeltaRequest(Session session)
Reset DeltaRequest from session

Parameters: session HttpSession from current request or cross context session

resetReplicationRequest

protected void resetReplicationRequest(Request request, boolean isCrossContext)
Fix memory leak for long sessions with many changes, when no backup member exists!

Parameters: request current request after responce is generated isCrossContext check crosscontext threadlocal

resetStatistics

public void resetStatistics()
reset the active statitics

send

protected void send(ClusterManager manager, CatalinaCluster cluster, String sessionId)
send manager requestCompleted message to cluster

Parameters: manager SessionManager cluster replication cluster sessionId sessionid from the manager

See Also: requestCompleted send

sendCrossContextSession

protected void sendCrossContextSession(CatalinaCluster containerCluster)
Send all changed cross context sessions to backups

Parameters: containerCluster

sendInvalidSessions

protected void sendInvalidSessions(ClusterManager manager, CatalinaCluster cluster)
check for session invalidations

Parameters: manager cluster

sendMessage

protected void sendMessage(Session session, ClusterManager manager, CatalinaCluster cluster)
Send message delta message from request session

Parameters: request current request manager session manager cluster replication cluster

sendReplicationMessage

protected void sendReplicationMessage(Request request, long totalstart, boolean isCrossContext, ClusterManager clusterManager, CatalinaCluster containerCluster)

Parameters: request totalstart isCrossContext clusterManager containerCluster

sendSessionReplicationMessage

protected void sendSessionReplicationMessage(Request request, ClusterManager manager, CatalinaCluster cluster)
Send Cluster Replication Request

Parameters: request current request manager session manager cluster replication cluster

setCluster

public void setCluster(CatalinaCluster cluster)

Parameters: cluster The cluster to set.

setFilter

public void setFilter(String filter)
compile filter string to regular expressions

Parameters: filter The filter to set.

See Also: Pattern#compile(java.lang.String)

setPrimaryIndicator

public void setPrimaryIndicator(boolean primaryIndicator)

Parameters: primaryIndicator The primaryIndicator to set.

setPrimaryIndicatorName

public void setPrimaryIndicatorName(String primaryIndicatorName)

Parameters: primaryIndicatorName The primaryIndicatorName to set.

setReqFilters

protected void setReqFilters(Pattern[] reqFilters)

Parameters: reqFilters The reqFilters to set.

setStatistics

public void setStatistics(boolean doProcessingStats)
Set Calc processing stats

See Also: resetStatistics

toString

public String toString()
Return a String rendering of this object.

updateStats

protected void updateStats(long requestTime, long clusterTime)
protocol cluster replications stats

Parameters: requestTime clusterTime

Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.