summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2010-04-20 14:03:56 +0000
committerRobert Gemmell <robbie@apache.org>2010-04-20 14:03:56 +0000
commit6558b445a8271f1f27efe1ea4e628aa068de6807 (patch)
tree872afee87d545d9ec6796f7733b80da15caa3204 /java
parent7bd3591dd580d1e5d2034676c4c674ba838eceb8 (diff)
downloadqpid-python-6558b445a8271f1f27efe1ea4e628aa068de6807.tar.gz
QPID-2097: Use the standard RMIServerSocketFactory for InVM testing to workaround the alternating pass-fail issue encountered when running back to back tests using JMX with the InVM broker. Enable the ModelTest.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@935928 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java11
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java65
-rw-r--r--java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java1
-rw-r--r--java/test-profiles/JavaExcludes1
4 files changed, 62 insertions, 16 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
index 307a697a95..2a956c6dff 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
@@ -86,6 +86,7 @@ public class ServerConfiguration implements SignalHandler
public static final String CONNECTOR_PROTECTIO_ENABLED = "connector.protectio.enabled";
public static final String CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE = "connector.protectio.readBufferLimitSize";
public static final String CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE = "connector.protectio.writeBufferLimitSize";
+ public static final String MGMT_CUSTOM_REGISTRY_SOCKET = "management.custom-registry-socket";
public static final String STATUS_UPDATES = "status-updates";
public static final String ADVANCED_LOCALE = "advanced.locale";
@@ -390,6 +391,16 @@ public class ServerConfiguration implements SignalHandler
{
return _jmxPort;
}
+
+ public boolean getUseCustomRMISocketFactory()
+ {
+ return getConfig().getBoolean(MGMT_CUSTOM_REGISTRY_SOCKET, true);
+ }
+
+ public void setUseCustomRMISocketFactory(boolean bool)
+ {
+ getConfig().setProperty(MGMT_CUSTOM_REGISTRY_SOCKET, bool);
+ }
public boolean getPlatformMbeanserver()
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java
index 048551010e..7ce0f6022b 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java
@@ -56,7 +56,8 @@ import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.rmi.AlreadyBoundException;
-import java.rmi.RemoteException;
+import java.rmi.NoSuchObjectException;
+import java.rmi.NotBoundException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RMIClientSocketFactory;
@@ -81,7 +82,7 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry
private final MBeanServer _mbeanServer;
private JMXConnectorServer _cs;
private Registry _rmiRegistry;
-
+ private boolean _useCustomSocketFactory;
public JMXManagedObjectRegistry() throws AMQException
{
@@ -89,6 +90,7 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry
IApplicationRegistry appRegistry = ApplicationRegistry.getInstance();
// Retrieve the config parameters
+ _useCustomSocketFactory = appRegistry.getConfiguration().getUseCustomRMISocketFactory();
boolean platformServer = appRegistry.getConfiguration().getPlatformMbeanserver();
_mbeanServer =
@@ -226,7 +228,14 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry
* As a result, only binds made using the object reference will succeed, thus securing it from external change.
*/
System.setProperty("java.rmi.server.randomIDs", "true");
- _rmiRegistry = LocateRegistry.createRegistry(port, null, new CustomRMIServerSocketFactory());
+ if(_useCustomSocketFactory)
+ {
+ _rmiRegistry = LocateRegistry.createRegistry(port, null, new CustomRMIServerSocketFactory());
+ }
+ else
+ {
+ _rmiRegistry = LocateRegistry.createRegistry(port, null, null);
+ }
/*
* We must now create the RMI ConnectorServer manually, as the JMX Factory methods use RMI calls
@@ -274,9 +283,28 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry
//now do the normal tasks
super.start();
- }
+ }
@Override
+ public synchronized void stop() throws IOException
+ {
+ try
+ {
+ if (_rmiRegistry != null)
+ {
+ _rmiRegistry.unbind("jmxrmi");
+ }
+ }
+ catch (NotBoundException nbe)
+ {
+ //ignore
+ }
+
+ //now do the normal tasks
+ super.stop();
+ }
+
+ @Override
public JMXServiceURL getAddress()
{
//must return our pre-crafted url that includes the full details, inc JNDI details
@@ -374,27 +402,34 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry
return false;
}
- // stops the RMIRegistry and unregisters the MBeans from the MBeanServer
- public void close() throws RemoteException
+ //Stops the JMXConnectorServer and RMIRegistry, then unregisters any remaining MBeans from the MBeanServer
+ public void close()
{
- if (_rmiRegistry != null)
- {
- // Stopping the RMI registry
- UnicastRemoteObject.unexportObject(_rmiRegistry, true);
- }
-
if (_cs != null)
{
// Stopping the JMX ConnectorServer
try
{
- _cs.stop();
- CurrentActor.get().message(ManagementConsoleMessages.MNG_SHUTTING_DOWN("RMI Registry", _cs.getAddress().getPort() - PORT_EXPORT_OFFSET));
CurrentActor.get().message(ManagementConsoleMessages.MNG_SHUTTING_DOWN("RMI ConnectorServer", _cs.getAddress().getPort()));
+ _cs.stop();
}
catch (IOException e)
{
- _log.warn("Error while closing the JMX ConnectorServer: " + e.getMessage());
+ _log.error("Exception while closing the JMX ConnectorServer: " + e.getMessage());
+ }
+ }
+
+ if (_rmiRegistry != null)
+ {
+ // Stopping the RMI registry
+ CurrentActor.get().message(ManagementConsoleMessages.MNG_SHUTTING_DOWN("RMI Registry", _cs.getAddress().getPort() - PORT_EXPORT_OFFSET));
+ try
+ {
+ UnicastRemoteObject.unexportObject(_rmiRegistry, false);
+ }
+ catch (NoSuchObjectException e)
+ {
+ _log.error("Exception while closing the RMI Registry: " + e.getMessage());
}
}
diff --git a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
index 9ec0f61351..6608bc1d7d 100644
--- a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
+++ b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
@@ -490,6 +490,7 @@ public class QpidTestCase extends TestCase
if (_broker.equals(VM))
{
setConfigurationProperty("management.jmxport", String.valueOf(getManagementPort(port)));
+ setConfigurationProperty(ServerConfiguration.MGMT_CUSTOM_REGISTRY_SOCKET, String.valueOf(false));
saveTestConfiguration();
// create an in_VM broker
diff --git a/java/test-profiles/JavaExcludes b/java/test-profiles/JavaExcludes
index 380963233f..99d354e316 100644
--- a/java/test-profiles/JavaExcludes
+++ b/java/test-profiles/JavaExcludes
@@ -15,7 +15,6 @@ org.apache.qpid.client.SessionCreateTest#*
// QPID-2097 exclude it from the InVM test runs until InVM JMX Interface is reliable
org.apache.qpid.management.jmx.ManagementActorLoggingTest#*
-org.apache.qpid.server.queue.ModelTest#*
// related to QPID-2471. Temporarily disabling these tests until I figure out why they are failing with the Java broker.
org.apache.qpid.test.unit.ack.RecoverTest#testRecoverResendsMsgs