Overview | Package | Class | Tree | Deprecated | Index | Help
| Apache Tomcat 6.0.43
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.catalina.ha.tcp
Class ReplicationValve

    java.lang.Object
      org.apache.catalina.valves.ValveBase
          org.apache.catalina.ha.tcp.ReplicationValve

All Implemented Interfaces:
  javax.management.MBeanRegistration, Contained, ClusterValve, Valve

    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.

Author:
  Craig R. McClanahan, Filip Hanik, Peter Rossbach

Field Summary
`protected java.lang.ThreadLocal` | `crossContextSessions` crossContext session container
`protected boolean` | `doProcessingStats` doProcessingStats (default = off)
`protected java.lang.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 java.lang.String` | `primaryIndicatorName` Name of primary change indicator as request attribute
`protected java.util.regex.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`

Fields inherited from class org.apache.catalina.valves.ValveBase
`container, containerLog, controller, domain, mserver, next, oname`

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()` Returns the cluster the cluster deployer is associated with
`java.lang.String` | `getFilter()`
`java.lang.String` | `getInfo()` Return descriptive information about this Valve implementation.
`long` | `getLastSendTime()`
`long` | `getNrOfCrossContextSendRequests()`
`long` | `getNrOfFilterRequests()`
`long` | `getNrOfRequests()`
`long` | `getNrOfSendRequests()`
`java.lang.String` | `getPrimaryIndicatorName()`
`protected java.util.regex.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(java.lang.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, java.lang.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)` Associates the cluster deployer with a cluster
`void` | `setFilter(java.lang.String filter)` compile filter string to regular expressions
`void` | `setPrimaryIndicator(boolean primaryIndicator)`
`void` | `setPrimaryIndicatorName(java.lang.String primaryIndicatorName)`
`protected void` | `setReqFilters(java.util.regex.Pattern[] reqFilters)`
`void` | `setStatistics(boolean doProcessingStats)` Set Calc processing stats
`java.lang.String` | `toString()` Return a String rendering of this object.
`protected void` | `updateStats(long requestTime, long clusterTime)` protocol cluster replications stats

Methods inherited from class org.apache.catalina.valves.ValveBase
`backgroundProcess, createObjectName, event, getContainer, getContainerName, getController, getDomain, getNext, getObjectName, getParentName, postDeregister, postRegister, preDeregister, preRegister, setContainer, setController, setNext, setObjectName`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.apache.catalina.Valve
`backgroundProcess, event, getNext, setNext`

Field Detail

### sm

    protected static StringManager sm

  The StringManager for this package.

### reqFilters

    protected java.util.regex.Pattern[] reqFilters

  holds file endings to not call for like images and others

### filter

    protected java.lang.String filter

  Orginal filter

### crossContextSessions

    protected java.lang.ThreadLocal crossContextSessions

  crossContext session container

### doProcessingStats

    protected boolean doProcessingStats

  doProcessingStats (default = off)

### totalRequestTime

    protected long totalRequestTime

### totalSendTime

    protected long totalSendTime

### nrOfRequests

    protected long nrOfRequests

### lastSendTime

    protected long lastSendTime

### nrOfFilterRequests

    protected long nrOfFilterRequests

### nrOfSendRequests

    protected long nrOfSendRequests

### nrOfCrossContextSendRequests

    protected long nrOfCrossContextSendRequests

### primaryIndicator

    protected boolean primaryIndicator

  must primary change indicator set

### primaryIndicatorName

    protected java.lang.String primaryIndicatorName

  Name of primary change indicator as request attribute

Constructor Detail

### ReplicationValve

    public ReplicationValve()

Method Detail

### getInfo

    public java.lang.String getInfo()

  Return descriptive information about this Valve implementation.

  Specified by:
    `getInfo` in interface `Valve`
  Overrides:
    `getInfo` in class `ValveBase`

### getCluster

    public CatalinaCluster getCluster()

  Description copied from interface: `ClusterValve`
  Returns the cluster the cluster deployer is associated with

  Specified by:
    `getCluster` in interface `ClusterValve`
  Returns:
    Returns the cluster.

### setCluster

    public void setCluster(CatalinaCluster cluster)

  Description copied from interface: `ClusterValve`
  Associates the cluster deployer with a cluster

  Specified by:
    `setCluster` in interface `ClusterValve`
  Parameters:
    `cluster` - The cluster to set.

### getFilter

    public java.lang.String getFilter()

  Returns:
    Returns the filter

### setFilter

    public void setFilter(java.lang.String filter)

  compile filter string to regular expressions

  Parameters:
    `filter` - The filter to set.
  See Also:
    `Pattern.compile(java.lang.String)`

### isPrimaryIndicator

    public boolean isPrimaryIndicator()

  Returns:
    Returns the primaryIndicator.

### setPrimaryIndicator

    public void setPrimaryIndicator(boolean primaryIndicator)

  Parameters:
    `primaryIndicator` - The primaryIndicator to set.

### getPrimaryIndicatorName

    public java.lang.String getPrimaryIndicatorName()

  Returns:
    Returns the primaryIndicatorName.

### setPrimaryIndicatorName

    public void setPrimaryIndicatorName(java.lang.String primaryIndicatorName)

  Parameters:
    `primaryIndicatorName` - The primaryIndicatorName to set.

### doStatistics

    public boolean doStatistics()

  Calc processing stats

### setStatistics

    public void setStatistics(boolean doProcessingStats)

  Set Calc processing stats

  See Also:
    `resetStatistics()`

### getLastSendTime

    public long getLastSendTime()

  Returns:
    Returns the lastSendTime.

### getNrOfRequests

    public long getNrOfRequests()

  Returns:
    Returns the nrOfRequests.

### getNrOfFilterRequests

    public long getNrOfFilterRequests()

  Returns:
    Returns the nrOfFilterRequests.

### getNrOfCrossContextSendRequests

    public long getNrOfCrossContextSendRequests()

  Returns:
    Returns the nrOfCrossContextSendRequests.

### getNrOfSendRequests

    public long getNrOfSendRequests()

  Returns:
    Returns the nrOfSendRequests.

### getTotalRequestTime

    public long getTotalRequestTime()

  Returns:
    Returns the totalRequestTime.

### getTotalSendTime

    public long getTotalSendTime()

  Returns:
    Returns the totalSendTime.

### getReqFilters

    protected java.util.regex.Pattern[] getReqFilters()

  Returns:
    Returns the reqFilters.

### setReqFilters

    protected void setReqFilters(java.util.regex.Pattern[] reqFilters)

  Parameters:
    `reqFilters` - The reqFilters to set.

### 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

### invoke

    public void invoke(Request request,
                       Response response)
                throws java.io.IOException,
                       javax.servlet.ServletException

  Log the interesting request parameters, invoke the next Valve in the sequence, and log the interesting response parameters.

  Specified by:
    `invoke` in interface `Valve`
  Specified by:
    `invoke` in class `ValveBase`
  Parameters:
    `request` - The servlet request to be processed
    `response` - The servlet response to be created
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet error occurs

### resetStatistics

    public void resetStatistics()

  reset the active statitics

### toString

    public java.lang.String toString()

  Return a String rendering of this object.

  Overrides:
    `toString` in class `ValveBase`

### sendReplicationMessage

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

  Parameters:
    `request` -
    `totalstart` -
    `isCrossContext` -
    `clusterManager` -
    `containerCluster` -

### sendCrossContextSession

    protected void sendCrossContextSession(CatalinaCluster containerCluster)

  Send all changed cross context sessions to backups

  Parameters:
    `containerCluster` -

### 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

### resetDeltaRequest

    protected void resetDeltaRequest(Session session)

  Reset DeltaRequest from session

  Parameters:
    `session` - HttpSession from current request or cross context session

### sendSessionReplicationMessage

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

  Send Cluster Replication Request

  Parameters:
    `request` - current request
    `manager` - session manager
    `cluster` - replication cluster

### sendMessage

    protected void sendMessage(Session session,
                               ClusterManager manager,
                               CatalinaCluster cluster)

  Send message delta message from request session

  Parameters:
    `session` - current session
    `manager` - session manager
    `cluster` - replication cluster

### send

    protected void send(ClusterManager manager,
                        CatalinaCluster cluster,
                        java.lang.String sessionId)

  send manager requestCompleted message to cluster

  Parameters:
    `manager` - SessionManager
    `cluster` - replication cluster
    `sessionId` - sessionid from the manager
  See Also:
    `DeltaManager.requestCompleted(String)`, `SimpleTcpCluster.send(ClusterMessage)`

### sendInvalidSessions

    protected void sendInvalidSessions(ClusterManager manager,
                                       CatalinaCluster cluster)

  check for session invalidations

  Parameters:
    `manager` -
    `cluster` -

### isRequestWithoutSessionChange

    protected boolean isRequestWithoutSessionChange(java.lang.String uri)

  is request without possible session change

  Parameters:
    `uri` - The request uri
  Returns:
    True if no session change

### updateStats

    protected void updateStats(long requestTime,
                               long clusterTime)

  protocol cluster replications stats

  Parameters:
    `requestTime` -
    `clusterTime` -

### createPrimaryIndicator

    protected void createPrimaryIndicator(Request request)
                                   throws java.io.IOException

  Mark Request that processed at primary node with attribute primaryIndicatorName

  Parameters:
    `request` -
  Throws:
    `java.io.IOException`

Overview | Package | Class | Tree | Deprecated | Index | Help
| Apache Tomcat 6.0.43
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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