diff options
| author | Keith Wall <kwall@apache.org> | 2014-05-21 17:31:13 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-05-21 17:31:13 +0000 |
| commit | 0aae0e2ca749482954529f3b71afbb21f9b4a0ce (patch) | |
| tree | 1dbf085f08630c3cdb8deb7bce15d20eb80ac941 /qpid/java | |
| parent | 2c26927e5bf02fed27c5393a670f016d92b56cbf (diff) | |
| download | qpid-python-0aae0e2ca749482954529f3b71afbb21f9b4a0ce.tar.gz | |
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
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1596631 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
4 files changed, 14 insertions, 11 deletions
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java index 681cdc5c45..360e41b476 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java @@ -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; } diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java index 49e6a09872..b0f5abd1a3 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java @@ -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 QpidSslRMIServerSocketFactory extends SslRMIServerSocketFactory { 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 QpidSslRMIServerSocketFactory extends SslRMIServerSocketFactory } }; serverSocket.setReuseAddress(true); + serverSocket.bind(new InetSocketAddress(port)); return serverSocket; } diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java index 48d63c8cea..b03dee2629 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java @@ -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 RegistryProtectingRMIServerSocketFactory implements RMIServerSocketFactory @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 RegistryProtectingRMIServerSocketFactory implements RMIServerSocketFactory private static class NoLocalAddressServerSocket extends ServerSocket { - NoLocalAddressServerSocket(int port) throws IOException + NoLocalAddressServerSocket() throws IOException { - super(port); + super(); } @Override diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java index f056cf9ae1..c4c768424e 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java @@ -152,8 +152,8 @@ public class PortRestTest extends QpidRestTestCase 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(); |
