You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ph...@apache.org on 2011/09/01 19:15:08 UTC
svn commit: r1164176 - in /zookeeper/trunk: CHANGES.txt
src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java
src/java/main/org/apache/zookeeper/jmx/ManagedUtil.java
src/java/test/org/apache/zookeeper/test/JMXEnv.java
Author: phunt
Date: Thu Sep 1 17:15:08 2011
New Revision: 1164176
URL: http://svn.apache.org/viewvc?rev=1164176&view=rev
Log:
ZOOKEEPER-1168. ZooKeeper fails to run with IKVM (Andrew Finnell via phunt)
Modified:
zookeeper/trunk/CHANGES.txt
zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java
zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/ManagedUtil.java
zookeeper/trunk/src/java/test/org/apache/zookeeper/test/JMXEnv.java
Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1164176&r1=1164175&r2=1164176&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Thu Sep 1 17:15:08 2011
@@ -300,6 +300,8 @@ BUGFIXES:
ZOOKEEPER-1051. SIGPIPE in Zookeeper 0.3.* when send'ing after
cluster disconnection (Stephen Tyree via mahadev)
+ ZOOKEEPER-1168. ZooKeeper fails to run with IKVM (Andrew Finnell via phunt)
+
IMPROVEMENTS:
ZOOKEEPER-724. Improve junit test integration - log harness information
(phunt via mahadev)
Modified: zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java?rev=1164176&r1=1164175&r2=1164176&view=diff
==============================================================================
--- zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java (original)
+++ zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java Thu Sep 1 17:15:08 2011
@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHa
import javax.management.JMException;
import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
@@ -39,7 +40,7 @@ import org.slf4j.LoggerFactory;
public class MBeanRegistry {
private static final Logger LOG = LoggerFactory.getLogger(MBeanRegistry.class);
- private static MBeanRegistry instance=new MBeanRegistry();
+ private static MBeanRegistry instance = new MBeanRegistry();
private Map<ZKMBeanInfo, String> mapBean2Path =
new ConcurrentHashMap<ZKMBeanInfo, String>();
@@ -47,10 +48,31 @@ public class MBeanRegistry {
private Map<String, ZKMBeanInfo> mapName2Bean =
new ConcurrentHashMap<String, ZKMBeanInfo>();
- public static MBeanRegistry getInstance(){
+ private MBeanServer mBeanServer;
+
+ public static MBeanRegistry getInstance() {
return instance;
}
-
+
+ public MBeanRegistry () {
+ try {
+ mBeanServer = ManagementFactory.getPlatformMBeanServer();
+ } catch (Error e) {
+ // Account for running within IKVM and create a new MBeanServer
+ // if the PlatformMBeanServer does not exist.
+ mBeanServer = MBeanServerFactory.createMBeanServer();
+ }
+ }
+
+ /**
+ * Return the underlying MBeanServer that is being
+ * used to register MBean's. The returned MBeanServer
+ * may be a new empty MBeanServer if running through IKVM.
+ */
+ public MBeanServer getPlatformMBeanServer() {
+ return mBeanServer;
+ }
+
/**
* Registers a new MBean with the platform MBean server.
* @param bean the bean being registered
@@ -71,10 +93,9 @@ public class MBeanRegistry {
mapName2Bean.put(bean.getName(), bean);
if(bean.isHidden())
return;
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName oname = makeObjectName(path, bean);
try {
- mbs.registerMBean(bean, oname);
+ mBeanServer.registerMBean(bean, oname);
} catch (JMException e) {
LOG.warn("Failed to register MBean " + bean.getName());
throw e;
@@ -90,9 +111,8 @@ public class MBeanRegistry {
if(path==null)
return;
if (!bean.isHidden()) {
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
try {
- mbs.unregisterMBean(makeObjectName(path, bean));
+ mBeanServer.unregisterMBean(makeObjectName(path, bean));
} catch (JMException e) {
LOG.warn("Failed to unregister MBean " + bean.getName());
throw e;
Modified: zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/ManagedUtil.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/ManagedUtil.java?rev=1164176&r1=1164175&r2=1164176&view=diff
==============================================================================
--- zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/ManagedUtil.java (original)
+++ zookeeper/trunk/src/java/main/org/apache/zookeeper/jmx/ManagedUtil.java Thu Sep 1 17:15:08 2011
@@ -18,7 +18,6 @@
package org.apache.zookeeper.jmx;
-import java.lang.management.ManagementFactory;
import java.util.Enumeration;
import javax.management.JMException;
@@ -45,7 +44,7 @@ public class ManagedUtil {
return;
}
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ MBeanServer mbs = MBeanRegistry.getInstance().getPlatformMBeanServer();
// Create and Register the top level Log4J MBean
HierarchyDynamicMBean hdm = new HierarchyDynamicMBean();
Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/JMXEnv.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/JMXEnv.java?rev=1164176&r1=1164175&r2=1164176&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/JMXEnv.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/JMXEnv.java Thu Sep 1 17:15:08 2011
@@ -19,7 +19,6 @@
package org.apache.zookeeper.test;
import java.io.IOException;
-import java.lang.management.ManagementFactory;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -36,9 +35,10 @@ import javax.management.remote.JMXServic
import junit.framework.TestCase;
+import org.apache.zookeeper.jmx.CommonNames;
+import org.apache.zookeeper.jmx.MBeanRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.jmx.CommonNames;
public class JMXEnv {
protected static final Logger LOG = LoggerFactory.getLogger(JMXEnv.class);
@@ -47,7 +47,7 @@ public class JMXEnv {
private static JMXConnector cc;
public static void setUp() throws IOException {
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ MBeanServer mbs = MBeanRegistry.getInstance().getPlatformMBeanServer();
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);