bip 01/05/06 19:15:40 Modified: catalina/src/share/org/apache/catalina Cluster.java catalina/src/share/org/apache/catalina/session DistributedManager.java Log: Cleanup in the Cluster interface to support pluggable Cluster implementations. Changed DistributedManager to support this new change. Revision Changes Path 1.2 +54 -16 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Cluster.java Index: Cluster.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Cluster.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Cluster.java 2001/05/04 20:45:35 1.1 +++ Cluster.java 2001/05/07 02:15:39 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Cluster.java,v 1.1 2001/05/04 20:45:35 bip Exp $ - * $Revision: 1.1 $ - * $Date: 2001/05/04 20:45:35 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Cluster.java,v 1.2 2001/05/07 02:15:39 bip Exp $ + * $Revision: 1.2 $ + * $Date: 2001/05/07 02:15:39 $ * * ==================================================================== * @@ -67,16 +67,20 @@ import java.beans.PropertyChangeListener; import java.util.Collection; import org.apache.catalina.cluster.ClusterMemberInfo; -import org.apache.catalina.cluster.MulticastReceiver; -import org.apache.catalina.cluster.MulticastSender; +import org.apache.catalina.cluster.ClusterReceiver; +import org.apache.catalina.cluster.ClusterSender; /** * A <b>Cluster</b> works as a Cluster client/server for the local host - * Different Cluster implementations can be used to support Session replication - * or weighted loadbalancing. + * Different Cluster implementations can be used to support different + * ways to communicate within the Cluster. A Cluster implementation is + * responsible for setting up a way to communicate within the Cluster + * and also supply "ClientApplications" with <code>ClusterSender</code> + * used when sending information in the Cluster and + * <code>ClusterInfo</code> used for receiving information in the Cluster. * * @author Bip Thelin - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $, $Date: 2001/05/07 02:15:39 $ */ public interface Cluster { @@ -99,6 +103,21 @@ public String getClusterName(); /** + * Set the time in seconds that the Cluster waits before + * checking for changes and replicated data. + * + * @param checkInterval The time in seconds to sleep + */ + public void setCheckInterval(int checkInterval); + + /** + * Get the time in seconds that this Cluster sleeps. + * + * @return The value in seconds + */ + public int getCheckInterval(); + + /** * Set the name of the cluster to join, if no cluster with * this name is present create one. * @@ -120,6 +139,20 @@ */ public Container getContainer(); + /** + * The debug detail level for this Cluster + * + * @param debug The debug level + */ + public void setDebug(int debug); + + /** + * Returns the debug level for this Cluster + * + * @return The debug level + */ + public int getDebug(); + // --------------------------------------------------------- Public Methods /** @@ -134,20 +167,25 @@ public Collection getRemoteClusterMembers(); /** - * Returns a <code>MulticastSender</code> which is the interface - * to use when communicating in the Cluster. + * Returns a <code>ClusterSender</code> which is the interface + * to use when sending information in the Cluster. senderId is + * used as a identifier so that information sent through this + * instance can only be used with the respectice + * <code>ClusterReceiver</code> * - * @return The MulticastSender to use + * @return The ClusterSender */ - public MulticastSender getMulticastSender(String senderId); + public ClusterSender getClusterSender(String senderId); /** - * Returns a <code>MulticastReceiver</code> which is the interface - * to use when communicating in the Cluster. + * Returns a <code>ClusterReceiver</code> which is the interface + * to use when receiving information in the Cluster. senderId is + * used as a indentifier, only information send through the + * <code>ClusterSender</code> with the same senderId can be received. * - * @return The MulticastSender to use + * @return The ClusterReceiver */ - public MulticastReceiver getMulticastReceiver(String senderId); + public ClusterReceiver getClusterReceiver(String senderId); /** * Return cluster information about the local host 1.2 +16 -16 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/DistributedManager.java Index: DistributedManager.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/DistributedManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DistributedManager.java 2001/05/04 20:45:47 1.1 +++ DistributedManager.java 2001/05/07 02:15:39 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/DistributedManager.java,v 1.1 2001/05/04 20:45:47 bip Exp $ - * $Revision: 1.1 $ - * $Date: 2001/05/04 20:45:47 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/DistributedManager.java,v 1.2 2001/05/07 02:15:39 bip Exp $ + * $Revision: 1.2 $ + * $Date: 2001/05/07 02:15:39 $ * * ==================================================================== * @@ -79,8 +79,8 @@ import org.apache.catalina.LifecycleException; import org.apache.catalina.Loader; import org.apache.catalina.Session; -import org.apache.catalina.cluster.MulticastSender; -import org.apache.catalina.cluster.MulticastReceiver; +import org.apache.catalina.cluster.ClusterSender; +import org.apache.catalina.cluster.ClusterReceiver; import org.apache.catalina.cluster.ReplicationWrapper; import org.apache.catalina.util.CustomObjectInputStream; @@ -90,7 +90,7 @@ * Store to make Sessions persistence. * * @author Bip Thelin - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $, $Date: 2001/05/07 02:15:39 $ */ public final class DistributedManager extends PersistentManagerBase { @@ -110,14 +110,14 @@ protected static String name = "DistributedManager"; /** - * Our MulticastSender, used when replicating sessions + * Our ClusterSender, used when replicating sessions */ - private MulticastSender multicastSender = null; + private ClusterSender clusterSender = null; /** - * Our MulticastReceiver + * Our ClusterReceiver */ - private MulticastReceiver multicastReceiver = null; + private ClusterReceiver clusterReceiver = null; // ------------------------------------------------------------- Properties @@ -162,7 +162,7 @@ oos.close(); byte[] obs = bos.toByteArray(); - multicastSender.send(obs); + clusterSender.send(obs); if(debug > 0) log("Replicating Session: "+session.getId()); @@ -186,8 +186,8 @@ cluster = container.getCluster(); if(cluster != null) { - this.multicastSender = cluster.getMulticastSender(name); - this.multicastReceiver = cluster.getMulticastReceiver(name); + this.clusterSender = cluster.getClusterSender(name); + this.clusterReceiver = cluster.getClusterReceiver(name); } super.start(); @@ -197,8 +197,8 @@ * Called from our background thread to process new received Sessions * */ - public void processMulticastReceiver() { - Object[] objs = multicastReceiver.getObjects(); + public void processClusterReceiver() { + Object[] objs = clusterReceiver.getObjects(); StandardSession _session = null; ByteArrayInputStream bis = null; Loader loader = null; @@ -258,7 +258,7 @@ // Loop until the termination semaphore is set while (!threadDone) { threadSleep(); - processMulticastReceiver(); + processClusterReceiver(); processExpires(); processPersistenceChecks(); }