You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2014/04/03 08:53:52 UTC
svn commit: r1584268 - in /tomcat/trunk:
java/org/apache/catalina/ha/session/ClusterManagerBase.java
java/org/apache/catalina/ha/session/DeltaManager.java
java/org/apache/catalina/ha/session/DeltaSession.java
webapps/docs/changelog.xml
Author: kfujino
Date: Thu Apr 3 06:53:51 2014
New Revision: 1584268
URL: http://svn.apache.org/r1584268
Log:
Add support for cross context session replication to BackupManager.
Modified:
tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java
tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java?rev=1584268&r1=1584267&r2=1584268&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java Thu Apr 3 06:53:51 2014
@@ -21,14 +21,22 @@ import java.io.IOException;
import java.util.regex.Pattern;
import org.apache.catalina.Context;
+import org.apache.catalina.LifecycleException;
import org.apache.catalina.Loader;
+import org.apache.catalina.Valve;
+import org.apache.catalina.core.StandardContext;
import org.apache.catalina.ha.CatalinaCluster;
import org.apache.catalina.ha.ClusterManager;
+import org.apache.catalina.ha.tcp.ReplicationValve;
import org.apache.catalina.session.ManagerBase;
import org.apache.catalina.tribes.io.ReplicationStream;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
public abstract class ClusterManagerBase extends ManagerBase implements ClusterManager {
+ private final Log log = LogFactory.getLog(ClusterManagerBase.class);
+
/**
* A reference to the cluster
*/
@@ -53,6 +61,11 @@ public abstract class ClusterManagerBase
*/
private Pattern sessionAttributePattern = null;
+ /**
+ * cached replication valve cluster container!
+ */
+ private volatile ReplicationValve replicationValve = null ;
+
/*
* @see org.apache.catalina.ha.ClusterManager#getCluster()
*/
@@ -189,4 +202,39 @@ public abstract class ClusterManagerBase
copy.setSecureRandomAlgorithm(getSecureRandomAlgorithm());
}
+ /**
+ * Register cross context session at replication valve thread local
+ * @param session cross context session
+ */
+ protected void registerSessionAtReplicationValve(DeltaSession session) {
+ if(replicationValve == null) {
+ Context context = getContext();
+ if(context instanceof StandardContext &&
+ ((StandardContext)context).getCrossContext()) {
+ CatalinaCluster cluster = getCluster() ;
+ if(cluster != null) {
+ Valve[] valves = cluster.getValves();
+ if(valves != null && valves.length > 0) {
+ for(int i=0; replicationValve == null && i < valves.length ; i++ ){
+ if(valves[i] instanceof ReplicationValve) replicationValve =
+ (ReplicationValve)valves[i] ;
+ }//for
+
+ if(replicationValve == null && log.isDebugEnabled()) {
+ log.debug("no ReplicationValve found for CrossContext Support");
+ }//endif
+ }//end if
+ }//endif
+ }//end if
+ }//end if
+ if(replicationValve != null) {
+ replicationValve.registerReplicationSession(session);
+ }
+ }
+
+ @Override
+ protected void stopInternal() throws LifecycleException {
+ replicationValve = null;
+ super.stopInternal();
+ }
}
Modified: tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java?rev=1584268&r1=1584267&r2=1584268&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java (original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java Thu Apr 3 06:53:51 2014
@@ -33,12 +33,9 @@ import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleState;
import org.apache.catalina.Session;
-import org.apache.catalina.Valve;
-import org.apache.catalina.core.StandardContext;
import org.apache.catalina.ha.CatalinaCluster;
import org.apache.catalina.ha.ClusterManager;
import org.apache.catalina.ha.ClusterMessage;
-import org.apache.catalina.ha.tcp.ReplicationValve;
import org.apache.catalina.session.ManagerBase;
import org.apache.catalina.tribes.Member;
import org.apache.catalina.tribes.io.ReplicationStream;
@@ -79,11 +76,6 @@ public class DeltaManager extends Cluste
protected static final String managerName = "DeltaManager";
protected String name = null;
- /**
- * cached replication valve cluster container!
- */
- private volatile ReplicationValve replicationValve = null ;
-
private boolean expireSessionsOnShutdown = false;
private boolean notifySessionListenersOnReplication = true;
private boolean notifyContainerListenersOnReplication = true;
@@ -845,36 +837,6 @@ public class DeltaManager extends Cluste
}
/**
- * Register cross context session at replication valve thread local
- * @param session cross context session
- */
- protected void registerSessionAtReplicationValve(DeltaSession session) {
- if(replicationValve == null) {
- Context context = getContext();
- if(context instanceof StandardContext &&
- ((StandardContext)context).getCrossContext()) {
- CatalinaCluster cluster = getCluster() ;
- if(cluster != null) {
- Valve[] valves = cluster.getValves();
- if(valves != null && valves.length > 0) {
- for(int i=0; replicationValve == null && i < valves.length ; i++ ){
- if(valves[i] instanceof ReplicationValve) replicationValve =
- (ReplicationValve)valves[i] ;
- }//for
-
- if(replicationValve == null && log.isDebugEnabled()) {
- log.debug("no ReplicationValve found for CrossContext Support");
- }//endif
- }//end if
- }//endif
- }//end if
- }//end if
- if(replicationValve != null) {
- replicationValve.registerReplicationSession(session);
- }
- }
-
- /**
* Find the master of the session state
* @return master member of sessions
*/
@@ -969,7 +931,6 @@ public class DeltaManager extends Cluste
// Require a new random number generator if we are restarted
getCluster().removeManager(this);
super.stopInternal();
- replicationValve = null;
}
// -------------------------------------------------------- Replication
Modified: tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java?rev=1584268&r1=1584267&r2=1584268&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java (original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java Thu Apr 3 06:53:51 2014
@@ -410,8 +410,8 @@ public class DeltaSession extends Standa
@Override
public void endAccess() {
super.endAccess() ;
- if(manager instanceof DeltaManager) {
- ((DeltaManager)manager).registerSessionAtReplicationValve(this);
+ if(manager instanceof ClusterManagerBase) {
+ ((ClusterManagerBase)manager).registerSessionAtReplicationValve(this);
}
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1584268&r1=1584267&r2=1584268&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Apr 3 06:53:51 2014
@@ -99,6 +99,10 @@
Remove cluster and replicationValve from cluster manager template. These
instance are not necessary to template. (kfujino)
</fix>
+ <fix>
+ Add support for cross context session replication to
+ <code>org.apache.catalina.ha.session.BackupManager</code>. (kfujino)
+ </fix>
</changelog>
</subsection>
<subsection name="Web applications">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org