Author: kwall
Date: Wed May 21 17:31:13 2014
New Revision: 1596631

URL: http://svn.apache.org/r1596631
Log:
QPID-5779: [Java Broker] JMX plugin's server sockets should set the 
SO_REUSEADDR socket option - defect fix - set socket option *before* port is 
bound

Modified:
    
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
    
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java
    
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java

Modified: 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java?rev=1596631&r1=1596630&r2=1596631&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
 Wed May 21 17:31:13 2014
@@ -19,21 +19,20 @@
 package org.apache.qpid.server.jmx;
 
 import java.io.IOException;
-import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.ServerSocket;
-import java.net.Socket;
 import java.rmi.server.RMIServerSocketFactory;
 
 import javax.net.ServerSocketFactory;
-import javax.net.SocketFactory;
 
 class QpidRMIServerSocketFactory implements RMIServerSocketFactory
 {
     @Override
-    public ServerSocket createServerSocket(int port) throws IOException
+    public ServerSocket createServerSocket(final int port) throws IOException
     {
-        ServerSocket serverSocket = 
ServerSocketFactory.getDefault().createServerSocket(port);
+        ServerSocket serverSocket = 
ServerSocketFactory.getDefault().createServerSocket();
         serverSocket.setReuseAddress(true);
+        serverSocket.bind(new InetSocketAddress(port));
         return serverSocket;
     }
 

Modified: 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java?rev=1596631&r1=1596630&r2=1596631&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java
 Wed May 21 17:31:13 2014
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.jmx;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
 
@@ -61,7 +62,7 @@ public class QpidSslRMIServerSocketFacto
     {
         final SSLSocketFactory factory = _sslContext.getSocketFactory();
 
-        ServerSocket serverSocket = new ServerSocket(port)
+        ServerSocket serverSocket = new ServerSocket()
         {
             public Socket accept() throws IOException
             {
@@ -78,6 +79,7 @@ public class QpidSslRMIServerSocketFacto
             }
         };
         serverSocket.setReuseAddress(true);
+        serverSocket.bind(new InetSocketAddress(port));
         return serverSocket;
     }
 

Modified: 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java?rev=1596631&r1=1596630&r2=1596631&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
 Wed May 21 17:31:13 2014
@@ -21,6 +21,7 @@ package org.apache.qpid.server.jmx;
 
 import java.io.IOException;
 import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.rmi.server.RMIServerSocketFactory;
@@ -39,8 +40,9 @@ class RegistryProtectingRMIServerSocketF
     @Override
     public ServerSocket createServerSocket(int port) throws IOException
     {
-        NoLocalAddressServerSocket serverSocket = new 
NoLocalAddressServerSocket(port);
+        NoLocalAddressServerSocket serverSocket = new 
NoLocalAddressServerSocket();
         serverSocket.setReuseAddress(true);
+        serverSocket.bind(new InetSocketAddress(port));
         return serverSocket;
     }
 
@@ -59,9 +61,9 @@ class RegistryProtectingRMIServerSocketF
 
     private static class NoLocalAddressServerSocket extends ServerSocket
     {
-        NoLocalAddressServerSocket(int port) throws IOException
+        NoLocalAddressServerSocket() throws IOException
         {
-            super(port);
+            super();
         }
 
         @Override

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java?rev=1596631&r1=1596630&r2=1596631&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
 Wed May 21 17:31:13 2014
@@ -152,8 +152,8 @@ public class PortRestTest extends QpidRe
         boolean rmiIsFree = getNextAvailable(rmiPort) == rmiPort;
         boolean jmxIsFree = getNextAvailable(jmxPort) == jmxPort;
 
-        assertTrue("Expecting rmiPort to be free after broker stop", 
rmiIsFree);
-        assertTrue("Expecting jmxPort to be free after broker stop", 
jmxIsFree);
+        assertTrue("Expecting rmiPort " + rmiPort + " to be free after broker 
stop", rmiIsFree);
+        assertTrue("Expecting jmxPort " + jmxPort + " to be free after broker 
stop", jmxIsFree);
 
         startBroker();
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to