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

Ron Sigal ron_sigal at yahoo.com
Tue Dec 19 01:09:22 EST 2006


  User: rsigal  
  Date: 06/12/19 01:09:22

  Modified:    src/main/org/jboss/remoting/transport/bisocket  Tag:
                        remoting_2_x BisocketServerInvoker.java
  Log:
  JBREM-650:  Avoid creating server socket for callback server invoker.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +74 -35    JBossRemoting/src/main/org/jboss/remoting/transport/bisocket/Attic/BisocketServerInvoker.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BisocketServerInvoker.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/bisocket/Attic/BisocketServerInvoker.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -b -r1.1.2.1 -r1.1.2.2
  --- BisocketServerInvoker.java	14 Dec 2006 01:03:55 -0000	1.1.2.1
  +++ BisocketServerInvoker.java	19 Dec 2006 06:09:21 -0000	1.1.2.2
  @@ -33,17 +33,17 @@
   import java.util.HashMap;
   import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.LinkedList;
   import java.util.Map;
  -import java.util.Set;
   import java.util.TimerTask;
   
  -import org.apache.commons.logging.Log;
   import org.jboss.remoting.Client;
   import org.jboss.remoting.InvocationRequest;
   import org.jboss.remoting.InvokerLocator;
   import org.jboss.remoting.ServerInvocationHandler;
   import org.jboss.remoting.invocation.InternalInvocation;
   import org.jboss.remoting.transport.PortUtil;
  +import org.jboss.remoting.transport.socket.LRUPool;
   import org.jboss.remoting.transport.socket.ServerThread;
   import org.jboss.remoting.transport.socket.SocketServerInvoker;
   import org.jboss.remoting.util.TimerUtil;
  @@ -52,7 +52,7 @@
   /**
    *  
    * @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
  - * @version $Revision: 1.1.2.1 $
  + * @version $Revision: 1.1.2.2 $
    * <p>
    * Copyright Nov 23, 2006
    * </p>
  @@ -69,6 +69,7 @@
      private int pingFrequency = Bisocket.PING_FREQUENCY_DEFAULT;
      private int pingWindow = 2 * pingFrequency;
      private ControlMonitorTimerTask controlMonitorTimerTask;
  +   protected boolean isCallbackServer = false;
      
      
      public static BisocketServerInvoker getBisocketServerInvoker(String listenerId)
  @@ -97,26 +98,31 @@
      
      public void start() throws IOException
      {
  -      super.start();
  -      
  -      boolean startSecondaryPort = false;
  -      Object o = configuration.get(Bisocket.START_SECONDARY_PORT);
  -      
  -      if (o != null)
  +      if (isCallbackServer)
         {
  -         if (o instanceof String)
  -            startSecondaryPort = Boolean.valueOf((String) o).booleanValue();
  -         else if (o instanceof Boolean)
  -            startSecondaryPort = ((Boolean) o).booleanValue();
  +         if(maxPoolSize <= 0)
  +         {
  +            maxPoolSize = MAX_POOL_SIZE_DEFAULT;
  +         }
  +         clientpool = new LRUPool(2, maxPoolSize);
  +         clientpool.create();
  +         threadpool = new LinkedList();
  +         running = true;
  +         started = true;
  +      }
            else
  -            log.error("unrecognized value for configuration key \"" + 
  -                      Bisocket.START_SECONDARY_PORT + "\": " + o);
  -         
  -         if (startSecondaryPort)
            {
  +         super.start();
               InetAddress host = getServerSocket().getInetAddress();
               int freePort = PortUtil.findFreePort(host.getHostAddress());
  +         if (serverSocketFactory != null)
  +         {
  +            secondaryServerSocket = serverSocketFactory.createServerSocket(freePort, 0, host);
  +         }
  +         else
  +         {
               secondaryServerSocket = new ServerSocket(freePort, 0, host);
  +         }
               secondaryLocator = new InvokerLocator(null, host.getHostAddress(), freePort, null, null); 
               secondaryServerSocketThread = new SecondaryServerSocketThread(secondaryServerSocket);
               secondaryServerSocketThread.setName("secondaryServerSocketThread");
  @@ -124,7 +130,6 @@
               secondaryServerSocketThread.start();
               log.info("started secondary port: " + host + ":" + freePort);
            }
  -      }
   //      ServerInvocationHandler handler = new InternalInvocationHandler(secondaryServerSocket);
   //      addInvocationHandler(Bisocket.BISOCKET_INTERNAL_SUBSYSTEM, handler);
      }
  @@ -147,7 +152,12 @@
            listenerIdToInvokerLocatorMap.put(listenerId, locator);
         
         log.info("creating control connection: " + locator);
  -      Socket socket = new Socket(locator.getHost(), locator.getPort());
  +//      Socket socket = new Socket(locator.getHost(), locator.getPort());
  +      Socket socket = null;
  +      if (socketFactory != null)
  +         socket = socketFactory.createSocket(locator.getHost(), locator.getPort());
  +      else
  +         socket = new Socket(locator.getHost(), locator.getPort());
         DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
         dos.write(Bisocket.CREATE_ORDINARY_SOCKET);
         dos.writeUTF(listenerId);
  @@ -167,7 +177,8 @@
         {
            controlMonitorTimerTask = new ControlMonitorTimerTask();
            TimerUtil.schedule(controlMonitorTimerTask, pingFrequency);
  -         log.info("scheduled ControlMonitorTimerTask: " + controlMonitorTimerTask);
  +         log.info(this + ": scheduled ControlMonitorTimerTask: " + controlMonitorTimerTask);
  +         log.info("pingFrequency: " + pingFrequency);
         }
      }
      
  @@ -186,9 +197,30 @@
      }
      
      
  +   protected void setup() throws Exception
  +   {
  +      Object o = configuration.get(Bisocket.IS_CALLBACK_SERVER);
  +      
  +      if (o != null)
  +      {
  +         if (o instanceof String)
  +            isCallbackServer = Boolean.valueOf((String) o).booleanValue();
  +         else if (o instanceof Boolean)
  +            isCallbackServer = ((Boolean) o).booleanValue();
  +         else
  +            log.error("unrecognized value for configuration key \"" + 
  +                  Bisocket.IS_CALLBACK_SERVER + "\": " + o);
  +      }
  +      
  +      super.setup();
  +   }
  +   
  +   
      protected void cleanup()
      {
         super.cleanup();
  +      log.info(this + ": $$$entering cleanup()");
  +      log.info("controlMonitorTimerTask: " + this.controlMonitorTimerTask);
         
         if (controlMonitorTimerTask != null)
         {
  @@ -201,6 +233,7 @@
            t.shutdown();
            it.remove();
         }
  +      log.info("secondaryServerSocketThread: " + secondaryServerSocketThread);
         if (secondaryServerSocketThread != null)
         {
            secondaryServerSocketThread.shutdown();
  @@ -330,6 +363,9 @@
   //                     String listenerId = dis.readUTF();
   //                     dis.readUTF();
                        InvokerLocator locator = (InvokerLocator) listenerIdToInvokerLocatorMap.get(listenerId);
  +                     if (socketFactory != null)
  +                        socket = socketFactory.createSocket(locator.getHost(), locator.getPort());
  +                     else
                        socket = new Socket(locator.getHost(), locator.getPort());
                        DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
                        dos.write(Bisocket.CREATE_ORDINARY_SOCKET);
  @@ -354,7 +390,8 @@
               {
                  if (running)
                  {
  -                  if ("socket closed".equals(e.getMessage()))
  +                  if ("socket closed".equals(e.getMessage()) || 
  +                      "Socket is closed".equals(e.getMessage()))
                     {
                        shutdown();
                        return;
  @@ -411,7 +448,7 @@
      class SecondaryServerSocketThread extends Thread
      {
         private ServerSocket secondaryServerSocket;
  -      boolean running;
  +      boolean running = true;
         
         SecondaryServerSocketThread(ServerSocket secondaryServerSocket) throws IOException
         {
  @@ -422,11 +459,11 @@
         {
            running = false;
            interrupt();
  +         log.info(this + ": shut down");
         }
         
         public void run()
         {
  -         running = true;
            while (running)
            {
               try
  @@ -474,6 +511,8 @@
      
      class ControlMonitorTimerTask extends TimerTask
      {
  +      private boolean running = true;
  +      
         void shutdown()
         {
            running = false;
  
  
  



More information about the jboss-cvs-commits mailing list