fhanik      2003/02/20 09:54:15

  Modified:    modules/cluster/src/share/org/apache/catalina/cluster/session
                        SimpleTcpReplicationManager.java
               modules/cluster/src/share/org/apache/catalina/cluster/tcp
                        SimpleTcpCluster.java
  Log:
  Now listening to the server for an after_start event before requesting data from 
other nodes
  
  Revision  Changes    Path
  1.2       +3 -12     
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java
  
  Index: SimpleTcpReplicationManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SimpleTcpReplicationManager.java  19 Feb 2003 20:32:10 -0000      1.1
  +++ SimpleTcpReplicationManager.java  20 Feb 2003 17:54:15 -0000      1.2
  @@ -459,15 +459,6 @@
               log("Received SessionMessage sender="+sender,3);
               switch ( msg.getEventType() ) {
                   case SessionMessage.EVT_GET_ALL_SESSIONS: {
  -                    try {
  -                        //hack, because we don't want to send the data until the
  -                        //manager is started up on the other side.
  -                        Thread.currentThread().sleep(5000);
  -                    }
  -                    catch ( Exception ignore ) {
  -                        //do nothing
  -                    }
  -
                       //get a list of all the session from this manager
                       Object[] sessions = findSessions();
                       java.io.ByteArrayOutputStream bout = new 
java.io.ByteArrayOutputStream();
  
  
  
  1.2       +40 -17    
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java
  
  Index: SimpleTcpCluster.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SimpleTcpCluster.java     19 Feb 2003 20:32:11 -0000      1.1
  +++ SimpleTcpCluster.java     20 Feb 2003 17:54:15 -0000      1.2
  @@ -70,6 +70,9 @@
   import java.io.IOException;
   import java.util.HashMap;
   
  +import org.apache.catalina.ServerFactory;
  +import org.apache.catalina.core.StandardServer;
  +
   import org.apache.catalina.Cluster;
   import org.apache.catalina.Container;
   import org.apache.catalina.Lifecycle;
  @@ -109,7 +112,9 @@
    */
   
   public class SimpleTcpCluster
  -    implements Cluster, Lifecycle,MembershipListener, ListenCallback {
  +    implements Cluster, Lifecycle,
  +               MembershipListener, ListenCallback,
  +               LifecycleListener {
   
   
       private static org.apache.commons.logging.Log log =
  @@ -231,7 +236,10 @@
        */
       protected HashMap managers = new HashMap();
   
  -
  +    /**
  +     * Nr of milliseconds between every heart beat
  +     */
  +    protected long msgFrequency = 500;
       /**
        * A reference to the membership service.
        */
  @@ -251,6 +259,11 @@
               log.error("In SimpleTcpCluster.constructor()",x);
           }
   
  +        if ( ServerFactory.getServer() instanceof StandardServer ) {
  +            StandardServer server = (StandardServer) ServerFactory.getServer();
  +            server.addLifecycleListener(this);
  +        }
  +
       }
       /**
        * Return descriptive information about this Cluster implementation and
  @@ -319,6 +332,7 @@
           support.firePropertyChange("container",
                                      oldContainer,
                                      this.container);
  +        //this.container.
       }
   
   
  @@ -431,22 +445,14 @@
               mReplicationListener.start();
               mReplicationTransmitter = new ReplicationTransmitter(new 
SocketSender[0]);
               mReplicationTransmitter.start();
  -            SessionMessage msg =
  -                new SessionMessage(null,
  -                                   SessionMessage.EVT_GET_ALL_SESSIONS,
  -                                   null,
  -                                   null);
  +
               //wait 5 seconds to establish the view membership
  -            log.info("Sleeping for 5 secs to establish cluster membership");
  +            log.info("Sleeping for "+(msgFrequency*4)+" secs to establish cluster 
membership");
               service = 
MembershipFactory.getMembershipService(serviceclass,svcproperties);
               service.addMembershipListener(this);
               service.start();
               localMember = service.getLocalMember();
  -            Thread.currentThread().sleep(5000);
  -            if (service.getMembers().length > 0) {
  -                Member mbr = service.getMembers()[0];
  -                send(msg, mbr);
  -            }
  +            Thread.currentThread().sleep((msgFrequency*4));
               this.started = true;
           } catch ( Exception x ) {
               log.error("Unable to start cluster.",x);
  @@ -556,6 +562,7 @@
       public void setMcastFrequency(long time)
       {
           svcproperties.setProperty("msgFrequency",String.valueOf(time));
  +        msgFrequency = time;
       }
   
       public void setMcastDropTime(long time)
  @@ -620,6 +627,22 @@
           } catch ( Exception x ) {
               log.error("Unable to deserialize session message.",x);
           }
  +    }
  +
  +    public void lifecycleEvent(LifecycleEvent lifecycleEvent){
  +        if ( 
lifecycleEvent.getLifecycle().AFTER_START_EVENT.equals(lifecycleEvent.getType()) ) {
  +            //The server has started
  +            SessionMessage msg =
  +                new SessionMessage(null,
  +                                   SessionMessage.EVT_GET_ALL_SESSIONS,
  +                                   null,
  +                                   null);
  +            if (service.getMembers().length > 0) {
  +                Member mbr = service.getMembers()[0];
  +                send(msg, mbr);
  +            }
  +
  +        }//end if
       }
       // ---------------------------------------------  Inner Class
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to