[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/socket ...

Ron Sigal ron_sigal at yahoo.com
Thu Feb 15 21:35:36 EST 2007


  User: rsigal  
  Date: 07/02/15 21:35:36

  Modified:    src/main/org/jboss/remoting/transport/socket 
                        SocketServerInvoker.java
  Log:
  JBREM-654:  Synchronized ServerSocketRefresh.run(), ServerSocketRefresh.release() setNewServerSocketFactory().  Also, runs ServerSocketRefresh as a daemon thread.
  
  Revision  Changes    Path
  1.35      +43 -41    JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SocketServerInvoker.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -b -r1.34 -r1.35
  --- SocketServerInvoker.java	3 Feb 2007 05:20:19 -0000	1.34
  +++ SocketServerInvoker.java	16 Feb 2007 02:35:36 -0000	1.35
  @@ -49,7 +49,7 @@
    * @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
    * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
    *
  - * @version $Revision: 1.34 $
  + * @version $Revision: 1.35 $
    * @jmx:mbean
    */
   public class SocketServerInvoker extends ServerInvoker implements Runnable, SocketServerInvokerMBean
  @@ -88,6 +88,7 @@
      protected LinkedList threadpool;
   
      protected boolean newServerSocketFactory = false;
  +   protected Object serverSocketFactoryLock = new Object();
   
      protected boolean reuseAddress = true;
   
  @@ -113,8 +114,13 @@
    	*/
      public void setNewServerSocketFactory(ServerSocketFactory serverSocketFactory)
      {
  +      synchronized (serverSocketFactoryLock)
  +      {
   	   newServerSocketFactory=true;
   	   setServerSocketFactory(serverSocketFactory);
  +         serverSocketFactoryLock.notify();
  +         log.info("ServerSocketFactory has been updated");
  +      }
      }
   
      /**
  @@ -130,6 +136,7 @@
   	   InetAddress bindAddress = InetAddress.getByName(getServerBindAddress());
   	   serverSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
         serverSocket.setReuseAddress(reuseAddress);
  +      log.info("ServerSocket has been updated");
      }
   
      protected void setup() throws Exception
  @@ -487,6 +494,7 @@
         if(trace) { log.trace(this + " started execution of method run()"); }
   
         ServerSocketRefresh thread = new ServerSocketRefresh();
  +      thread.setDaemon(true);
         thread.start();
   
         try
  @@ -644,8 +652,6 @@
       */
      public class ServerSocketRefresh extends Thread
      {
  -      boolean serverSocketLocked=false;
  -
         public ServerSocketRefresh()
         {
            super("ServerSocketRefresh");
  @@ -656,10 +662,12 @@
            while(true)
            {
               if(isInterrupted())break;
  +            
  +            synchronized (serverSocketFactoryLock)
  +            {  
               if(newServerSocketFactory)
               {
                  log.debug("got notice about new ServerSocketFactory");
  -               serverSocketLocked=true;
                  try
                  {
                     log.debug("refreshing server socket");
  @@ -670,34 +678,28 @@
                     log.debug("message is: "+e.getMessage());
                  }
                  log.debug("server socket refreshed");
  -               serverSocketLocked=false;
               }
  +               
               try
               {
  -               Thread.sleep(10000);
  +                  serverSocketFactoryLock.wait();
               }
               catch (InterruptedException e)
               {
  -               interrupt();
  +                  break;
  +               }
               }
            }
         }
   
         /**
  -       * let the run() method resume when refresh is completed
  +       * Let SocketServerInvoker.run() resume when refresh is completed
          */
         public void release()
         {
  -         while (serverSocketLocked)
  +         synchronized (serverSocketFactoryLock)
            {
  -            try
  -            {
  -               Thread.sleep(1000);
  -            }
  -            catch(InterruptedException ignored)
  -            {
  -
  -            }
  +            log.trace("passed through ServerSocketRefresh.release()");
            }
         }
      }
  
  
  



More information about the jboss-cvs-commits mailing list