Author: cwiklik
Date: Mon Jan 13 19:15:17 2014
New Revision: 1557815
URL: http://svn.apache.org/r1557815
Log:
UIMA-3544 allow deamon to start despite JMX error while starting JMX connector
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java
URL:
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java?rev=1557815&r1=1557814&r2=1557815&view=diff
==============================================================================
---
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java
(original)
+++
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java
Mon Jan 13 19:15:17 2014
@@ -393,9 +393,13 @@ public abstract class AbstractDuccCompon
e.printStackTrace();
}
+ /**
+ * Start RMI registry so the JMX clients can connect to the JVM via JMX.
+ *
+ * @return JMX connect URL
+ * @throws Exception
+ */
public String startJmxAgent() throws Exception {
- try {
-
int rmiRegistryPort = 2099; // start with a default port setting
if (System.getProperty("ducc.jmx.port") != null) {
try {
@@ -403,33 +407,46 @@ public abstract class AbstractDuccCompon
rmiRegistryPort = tmp;
} catch (NumberFormatException nfe) {
// default to 2099
+ nfe.printStackTrace();
}
}
boolean done = false;
JMXServiceURL url = null;
+
// retry until a valid rmi port is found
while (!done) {
- try {
- LocateRegistry.createRegistry(rmiRegistryPort);
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ try {
+ // set up RMI registry on a given port
+ LocateRegistry.createRegistry(rmiRegistryPort);
+ done = true;
+ // Got a valid port
+ } catch( Exception exx) {
+ // Try again with a different port
+ rmiRegistryPort++;
+ }
+ } // while
- final String hostname = InetAddress.getLocalHost().getHostName();
- String s =
String.format("service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi", hostname,
- rmiRegistryPort);
- url = new JMXServiceURL(s);
- jmxConnector = JMXConnectorServerFactory.newJMXConnectorServer(url,
null, mbs);
- jmxConnector.start();
- done = true;
- // Got a valid port
+ try {
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ DuccProperties dp = new DuccProperties();
+
+ final String hostname = InetAddress.getLocalHost().getHostName();
+ String s =
String.format("service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi", hostname,
+ rmiRegistryPort);
+ url = new JMXServiceURL(s);
+ jmxConnector =
JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
+ jmxConnector.start();
} catch (Exception e) {
- // Try again with a different port
- rmiRegistryPort++;
+ url = null;
+ if ( logger != null ) {
+ logger.error("startJmxAgent", null, "Unable to Start
JMX Connector. Running with *No* JMX Connectivity");
+ }
}
+ if ( url == null ) {
+ return ""; // empty string
+ } else {
+ return url.toString();
}
- return url.toString();
- } catch (Exception e) {
- throw e;
- }
}
public void cleanup(Throwable e) {