[jboss-osgi-commits] JBoss-OSGI SVN: r103656 - in projects/jboss-osgi/projects/bundles/jmx/trunk: impl and 3 other directories.
jboss-osgi-commits at lists.jboss.org
jboss-osgi-commits at lists.jboss.org
Wed Apr 7 16:02:35 EDT 2010
Author: thomas.diesler at jboss.com
Date: 2010-04-07 16:02:31 -0400 (Wed, 07 Apr 2010)
New Revision: 103656
Modified:
projects/jboss-osgi/projects/bundles/jmx/trunk/api/src/main/java/org/jboss/osgi/jmx/JMXConstantsExt.java
projects/jboss-osgi/projects/bundles/jmx/trunk/impl/pom.xml
projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/JMXCapability.java
projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXConnectorService.java
projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXServiceActivator.java
projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/RMIAdaptor.java
projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/test/java/org/jboss/test/osgi/jmx/JSR160TestCase.java
Log:
Add explicit port for RMI registry
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/api/src/main/java/org/jboss/osgi/jmx/JMXConstantsExt.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/api/src/main/java/org/jboss/osgi/jmx/JMXConstantsExt.java 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/api/src/main/java/org/jboss/osgi/jmx/JMXConstantsExt.java 2010-04-07 20:02:31 UTC (rev 103656)
@@ -33,10 +33,19 @@
{
/** The property that sets the host that the RMIAdaptor binds to: org.jboss.osgi.jmx.host */
String REMOTE_JMX_HOST = "org.jboss.osgi.jmx.host";
- /** The property that sets the port that the RMIAdaptor binds to: org.jboss.osgi.jmx.port */
+ /** The property that sets the port that the RMIAdaptor binds to: org.jboss.osgi.jmx.rmi.port */
String REMOTE_JMX_RMI_PORT = "org.jboss.osgi.jmx.rmi.port";
+ /** The property that sets the port that the RMI Registry binds to: org.jboss.osgi.jmx.rmi.registry.port */
+ String REMOTE_JMX_RMI_REGISTRY_PORT = "org.jboss.osgi.jmx.rmi.registry.port";
/** The property that sets the JNDI name the RMIAdaptor binds to: org.jboss.osgi.jmx.rmi.adaptor */
String REMOTE_JMX_RMI_ADAPTOR = "org.jboss.osgi.jmx.rmi.adaptor";
+
+ /** The default host that the RMIAdaptor binds to: localhost */
+ String DEFAULT_REMOTE_JMX_HOST = "localhost";
+ /** The default port that the RMIAdaptor binds to: 1198 */
+ String DEFAULT_REMOTE_JMX_RMI_PORT = "1198";
+ /** The default port that the RMI Registry binds to: 1090 */
+ String DEFAULT_REMOTE_JMX_RMI_REGISTRY_PORT = "1090";
/** The default JNDI name the RMIAdaptor binds to: osgi/jmx/RMIAdaptor */
- String REMOTE_JMX_RMI_ADAPTOR_NAME = "osgi/jmx/RMIAdaptor";
+ String DEFAULT_JMX_RMI_ADAPTOR = "osgi/jmx/RMIAdaptor";
}
\ No newline at end of file
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/impl/pom.xml
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/impl/pom.xml 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/impl/pom.xml 2010-04-07 20:02:31 UTC (rev 103656)
@@ -194,10 +194,6 @@
<argLine>${surefire.jpda.args}</argLine>
<systemProperties>
<property>
- <name>java.protocol.handler.pkgs</name>
- <value>org.jboss.net.protocol|org.jboss.virtual.protocol</value>
- </property>
- <property>
<name>log4j.output.dir</name>
<value>${project.build.directory}</value>
</property>
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/JMXCapability.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/JMXCapability.java 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/JMXCapability.java 2010-04-07 20:02:31 UTC (rev 103656)
@@ -23,6 +23,13 @@
//$Id$
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_REMOTE_JMX_HOST;
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_REMOTE_JMX_RMI_PORT;
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_REMOTE_JMX_RMI_REGISTRY_PORT;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_HOST;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_RMI_PORT;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_RMI_REGISTRY_PORT;
+
import javax.management.MBeanServer;
import javax.management.ObjectName;
@@ -63,8 +70,9 @@
{
super(MBeanServer.class.getName());
- addSystemProperty("org.jboss.osgi.jmx.host", System.getProperty("jboss.bind.address", "localhost"));
- addSystemProperty("org.jboss.osgi.jmx.rmi.port", "1198");
+ addSystemProperty(REMOTE_JMX_HOST, System.getProperty("jboss.bind.address", DEFAULT_REMOTE_JMX_HOST));
+ addSystemProperty(REMOTE_JMX_RMI_PORT, DEFAULT_REMOTE_JMX_RMI_PORT);
+ addSystemProperty(REMOTE_JMX_RMI_REGISTRY_PORT, DEFAULT_REMOTE_JMX_RMI_REGISTRY_PORT);
addDependency(new CompendiumCapability());
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXConnectorService.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXConnectorService.java 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXConnectorService.java 2010-04-07 20:02:31 UTC (rev 103656)
@@ -24,9 +24,10 @@
//$Id$
import java.io.IOException;
+import java.io.Serializable;
import java.net.InetAddress;
import java.net.MalformedURLException;
-import java.rmi.RemoteException;
+import java.rmi.Remote;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
@@ -48,38 +49,41 @@
{
// Provide logging
private static final Logger log = Logger.getLogger(JMXConnectorService.class);
-
+
private JMXServiceURL serviceURL;
private JMXConnectorServer jmxConnectorServer;
private boolean shutdownRegistry;
private Registry rmiRegistry;
- public JMXConnectorService(MBeanServer mbeanServer, String host, int rmiPort) throws IOException
+ static class RemoteObj implements Remote, Serializable
{
- // check to see if registry already created
- rmiRegistry = LocateRegistry.getRegistry(host, rmiPort);
+ private static final long serialVersionUID = 1L;
+ }
+
+ public JMXConnectorService(JMXServiceURL serviceURL, int regPort) throws IOException
+ {
+ this.serviceURL = serviceURL;
+
+ String host = serviceURL.getHost();
+
+ // Check to see if registry already created
+ rmiRegistry = LocateRegistry.getRegistry(host, regPort);
try
{
rmiRegistry.list();
- log.debug("RMI registry running at host=" + host + ",port=" + rmiPort);
+ log.debug("RMI registry running at host=" + host + ",port=" + regPort);
}
- catch (RemoteException e)
+ catch (Exception ex)
{
- log.debug("No RMI registry running at host=" + host + ",port=" + rmiPort + ". Will create one.");
- rmiRegistry = LocateRegistry.createRegistry(rmiPort, null, new DefaultSocketFactory(InetAddress.getByName(host)));
+ log.debug("No RMI registry running at host=" + host + ",port=" + regPort + ". Will create one.");
+ rmiRegistry = LocateRegistry.createRegistry(regPort, null, new DefaultSocketFactory(InetAddress.getByName(host)));
shutdownRegistry = true;
}
-
- // create new connector server and start it
- serviceURL = getServiceURL(host, rmiPort);
- jmxConnectorServer = JMXConnectorServerFactory.newJMXConnectorServer(serviceURL, null, mbeanServer);
-
- log.debug("JMXConnectorServer created: " + serviceURL);
}
- static JMXServiceURL getServiceURL(String host, int rmiPort)
+ static JMXServiceURL getServiceURL(String host, int conPort, int regPort)
{
- String jmxConnectorURL = "service:jmx:rmi://" + host + "/jndi/rmi://" + host + ":" + rmiPort + "/jmxconnector";
+ String jmxConnectorURL = "service:jmx:rmi://" + host + ":" + conPort + "/jndi/rmi://" + host + ":" + regPort + "/osgi-jmx-connector";
try
{
return new JMXServiceURL(jmxConnectorURL);
@@ -90,34 +94,20 @@
}
}
- public void start()
+ public void start(MBeanServer mbeanServer) throws IOException
{
- ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ // create new connector server and start it
+ jmxConnectorServer = JMXConnectorServerFactory.newJMXConnectorServer(serviceURL, null, mbeanServer);
+ log.debug("JMXConnectorServer created: " + serviceURL);
- jmxConnectorServer.start();
-
- log.debug("JMXConnectorServer started: " + serviceURL);
- }
- catch (IOException ex)
- {
- log.error("Cannot start JMXConnectorServer", ex);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(ctxLoader);
- }
+ jmxConnectorServer.start();
+ log.debug("JMXConnectorServer started: " + serviceURL);
}
public void stop()
{
- ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
try
{
- Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
-
jmxConnectorServer.stop();
// Shutdown the registry if this service created it
@@ -133,9 +123,5 @@
{
log.warn("Cannot stop JMXConnectorServer", ex);
}
- finally
- {
- Thread.currentThread().setContextClassLoader(ctxLoader);
- }
}
}
\ No newline at end of file
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXServiceActivator.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXServiceActivator.java 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/JMXServiceActivator.java 2010-04-07 20:02:31 UTC (rev 103656)
@@ -23,6 +23,15 @@
//$Id$
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_JMX_RMI_ADAPTOR;
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_REMOTE_JMX_HOST;
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_REMOTE_JMX_RMI_PORT;
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_REMOTE_JMX_RMI_REGISTRY_PORT;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_HOST;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_RMI_ADAPTOR;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_RMI_PORT;
+import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_RMI_REGISTRY_PORT;
+
import java.io.IOException;
import javax.management.MBeanServer;
@@ -35,7 +44,6 @@
import javax.naming.StringRefAddr;
import org.jboss.logging.Logger;
-import org.jboss.osgi.jmx.JMXConstantsExt;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
@@ -55,6 +63,7 @@
private JMXConnectorService jmxConnector;
private String jmxHost;
private String jmxRmiPort;
+ private String rmiRegistryPort;
private String rmiAdaptorName;
private MBeanServer mbeanServer;
private FrameworkStateExt frameworkState;
@@ -87,20 +96,24 @@
packageState = new PackageStateExt(sysContext, mbeanServer);
packageState.start();
- jmxHost = context.getProperty(JMXConstantsExt.REMOTE_JMX_HOST);
+ jmxHost = context.getProperty(REMOTE_JMX_HOST);
if (jmxHost == null)
- jmxHost = "localhost";
+ jmxHost = DEFAULT_REMOTE_JMX_HOST;
- jmxRmiPort = context.getProperty(JMXConstantsExt.REMOTE_JMX_RMI_PORT);
+ jmxRmiPort = context.getProperty(REMOTE_JMX_RMI_PORT);
if (jmxRmiPort == null)
- jmxRmiPort = "1098";
+ jmxRmiPort = DEFAULT_REMOTE_JMX_RMI_PORT;
- rmiAdaptorName = context.getProperty(JMXConstantsExt.REMOTE_JMX_RMI_ADAPTOR);
+ rmiRegistryPort = context.getProperty(REMOTE_JMX_RMI_REGISTRY_PORT);
+ if (rmiRegistryPort == null)
+ rmiRegistryPort = DEFAULT_REMOTE_JMX_RMI_REGISTRY_PORT;
+
+ rmiAdaptorName = context.getProperty(REMOTE_JMX_RMI_ADAPTOR);
if (rmiAdaptorName == null)
- rmiAdaptorName = JMXConstantsExt.REMOTE_JMX_RMI_ADAPTOR_NAME;
+ rmiAdaptorName = DEFAULT_JMX_RMI_ADAPTOR;
// Start tracking the NamingService
- InitialContextTracker tracker = new InitialContextTracker(context, rmiAdaptorName);
+ InitialContextTracker tracker = new InitialContextTracker(context);
tracker.open();
}
@@ -127,63 +140,55 @@
class InitialContextTracker extends ServiceTracker
{
- private String rmiAdaptorName;
private boolean rmiAdaptorBound;
- public InitialContextTracker(BundleContext context, String rmiAdaptorName)
+ public InitialContextTracker(BundleContext context)
{
super(context, InitialContext.class.getName(), null);
- this.rmiAdaptorName = rmiAdaptorName;
}
@Override
public Object addingService(ServiceReference reference)
{
InitialContext iniCtx = (InitialContext)super.addingService(reference);
-
- JMXServiceURL serviceURL = JMXConnectorService.getServiceURL(jmxHost, Integer.parseInt(jmxRmiPort));
+
+ int conPort = Integer.parseInt(jmxRmiPort);
+ int regPort = Integer.parseInt(rmiRegistryPort);
+ JMXServiceURL serviceURL = JMXConnectorService.getServiceURL(jmxHost, conPort, regPort);
try
{
- // Try to start the JMXConnector, this should fail if it is already running
- // [TODO] is there a better way to check whether the connector is already running?
- jmxConnector = new JMXConnectorService(mbeanServer, jmxHost, Integer.parseInt(jmxRmiPort));
- jmxConnector.start();
+ jmxConnector = new JMXConnectorService(serviceURL, regPort);
+ jmxConnector.start(mbeanServer);
}
catch (IOException ex)
{
- // Assume that the JMXConnector is already running if we cannot start it
- log.debug("Assume JMXConnectorServer already running on: " + serviceURL);
+ log.error("Cannot start JMXConnectorServer on: " + serviceURL, ex);
+ return iniCtx;
}
+ // Bind the RMIAdaptor
try
{
- // Check if the RMIAdaptor is already bound
- iniCtx.lookup(rmiAdaptorName);
- }
- catch (NamingException lookupEx)
- {
- // Bind the RMIAdaptor
- try
+ String[] tokens = rmiAdaptorName.split("/");
+ Context ctx = iniCtx;
+ for (int i = 0; i < tokens.length - 1; i++)
{
- String[] tokens = rmiAdaptorName.split("/");
- Context ctx = iniCtx;
- for (int i = 0; i < tokens.length - 1; i++)
- {
- String token = tokens[i];
- ctx = ctx.createSubcontext(token);
- }
- StringRefAddr addr = new StringRefAddr(JMXServiceURL.class.getName(), serviceURL.toString());
- Reference ref = new Reference(MBeanServerConnection.class.getName(), addr, RMIAdaptorFactory.class.getName(), null);
- iniCtx.bind(rmiAdaptorName, ref);
- rmiAdaptorBound = true;
+ String token = tokens[i];
+ ctx = ctx.createSubcontext(token);
+ }
+ StringRefAddr addr = new StringRefAddr(JMXServiceURL.class.getName(), serviceURL.toString());
+ Reference ref = new Reference(MBeanServerConnection.class.getName(), addr, RMIAdaptorFactory.class.getName(), null);
+ iniCtx.bind(rmiAdaptorName, ref);
+ rmiAdaptorBound = true;
- log.info("MBeanServerConnection bound to: " + rmiAdaptorName);
- }
- catch (NamingException ex)
- {
- log.error("Cannot bind RMIAdaptor", ex);
- }
+ log.debug("MBeanServerConnection bound to: " + rmiAdaptorName);
}
+ catch (NamingException ex)
+ {
+ log.error("Cannot bind RMIAdaptor", ex);
+ return iniCtx;
+ }
+
return iniCtx;
}
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/RMIAdaptor.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/RMIAdaptor.java 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/main/java/org/jboss/osgi/jmx/internal/RMIAdaptor.java 2010-04-07 20:02:31 UTC (rev 103656)
@@ -30,14 +30,20 @@
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
+import org.jboss.logging.Logger;
+
public class RMIAdaptor implements MBeanServerConnection, Serializable
{
- private static final long serialVersionUID = 6066226353118090215L;
+ private static final long serialVersionUID = -360532663805790477L;
- private MBeanServerConnection delegate;
+ // Provide logging
+ private transient final Logger log = Logger.getLogger(RMIAdaptor.class);
+
+ private transient MBeanServerConnection delegate;
public RMIAdaptor(JMXServiceURL url) throws IOException
{
+ log.debug("Connect JMXConnector to: " + url);
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
delegate = jmxc.getMBeanServerConnection();
}
Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/test/java/org/jboss/test/osgi/jmx/JSR160TestCase.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/test/java/org/jboss/test/osgi/jmx/JSR160TestCase.java 2010-04-07 20:00:05 UTC (rev 103655)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/impl/src/test/java/org/jboss/test/osgi/jmx/JSR160TestCase.java 2010-04-07 20:02:31 UTC (rev 103656)
@@ -23,7 +23,7 @@
//$Id: ServiceStateTestCase.java 103562 2010-04-06 10:25:15Z thomas.diesler at jboss.com $
-import static org.jboss.osgi.jmx.JMXConstantsExt.REMOTE_JMX_RMI_ADAPTOR_NAME;
+import static org.jboss.osgi.jmx.JMXConstantsExt.DEFAULT_JMX_RMI_ADAPTOR;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -54,7 +54,7 @@
public void testJMXConnector() throws Exception
{
// The address of the connector server
- JMXServiceURL address = new JMXServiceURL("service:jmx:rmi://localhost/jndi/rmi://localhost:1098/jmxconnector");
+ JMXServiceURL address = new JMXServiceURL("service:jmx:rmi://localhost:1198/jndi/rmi://localhost:1090/osgi-jmx-connector");
// The environment map, null in this case
Map<String, ?> environment = null;
@@ -82,7 +82,7 @@
public void testRMIAdaptor() throws Exception
{
InitialContext iniCtx = getInitialContext();
- MBeanServerConnection mbsc = (MBeanServerConnection)iniCtx.lookup(REMOTE_JMX_RMI_ADAPTOR_NAME);
+ MBeanServerConnection mbsc = (MBeanServerConnection)iniCtx.lookup(DEFAULT_JMX_RMI_ADAPTOR);
// Call the remote MBeanServer
String domain = mbsc.getDefaultDomain();
More information about the jboss-osgi-commits
mailing list