[jboss-remoting-commits] JBoss Remoting SVN: r6253 - remoting2/branches/2.2/src/main/org/jboss/remoting/transport/bisocket.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Wed Feb 23 17:25:14 EST 2011


Author: ron.sigal at jboss.com
Date: 2011-02-23 17:25:14 -0500 (Wed, 23 Feb 2011)
New Revision: 6253

Modified:
   remoting2/branches/2.2/src/main/org/jboss/remoting/transport/bisocket/BisocketServerInvoker.java
Log:
JBREM-1261: (1) Limited number of threads; (2) set timeout for Socket.read().


Modified: remoting2/branches/2.2/src/main/org/jboss/remoting/transport/bisocket/BisocketServerInvoker.java
===================================================================
--- remoting2/branches/2.2/src/main/org/jboss/remoting/transport/bisocket/BisocketServerInvoker.java	2011-02-23 22:23:27 UTC (rev 6252)
+++ remoting2/branches/2.2/src/main/org/jboss/remoting/transport/bisocket/BisocketServerInvoker.java	2011-02-23 22:25:14 UTC (rev 6253)
@@ -53,7 +53,9 @@
 import org.jboss.remoting.transport.socket.SocketServerInvoker;
 import org.jboss.logging.Logger;
 
+import EDU.oswego.cs.dl.util.concurrent.Semaphore;
 
+
 /**
  *
  * @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
@@ -861,6 +863,7 @@
    {
       private ServerSocket secondaryServerSocket;
       boolean running = true;
+      Semaphore maxThreads = new Semaphore(maxPoolSize);
 
       SecondaryServerSocketThread(ServerSocket secondaryServerSocket) throws IOException
       {
@@ -896,6 +899,19 @@
 
       void processSocket(final Socket socket) throws IOException
       {
+         while (true)
+         {
+            try
+            {
+               maxThreads.acquire();
+               break;
+            }
+            catch (InterruptedException e1)
+            {
+               log.trace("unexpected interrupt");
+            }
+         }
+         
          new Thread()
          {
             public void run()
@@ -904,6 +920,7 @@
                if (log.isTraceEnabled()) log.trace(this + " processing socket: " + socket);
                try
                {
+                  socket.setSoTimeout(DEFAULT_TIMEOUT_PERIOD);
                   DataInputStream dis = new DataInputStream(socket.getInputStream());
                   int action = dis.read();
                   String listenerId = dis.readUTF();
@@ -954,6 +971,7 @@
                finally
                {
                   if (log.isTraceEnabled()) log.trace(this + " processed socket: " + socket);
+                  maxThreads.release();
                }
             }
          }.start();



More information about the jboss-remoting-commits mailing list