package org.zstack.core.jmx;
import org.zstack.header.exception.CloudRuntimeException;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
/**
*/
public class JmxFacadeImpl implements JmxFacade {
private static final CLogger logger = Utils.getLogger(JmxFacadeImpl.class);
private MBeanServer mBeanServer;
private boolean isEnabled() {
return mBeanServer != null;
}
void init() {
mBeanServer = ManagementFactory.getPlatformMBeanServer();
if (!isEnabled()) {
logger.warn(String.format("unable to find a mBeanServer, JMX function will be disabled"));
}
}
@Override
public void registerBean(String name, Object bean) {
if (!isEnabled()) {
logger.warn(String.format("JMX is disabled because no mBeanServer, ignore registering mBean %s", name));
return;
}
try {
ObjectName mxbeanName = new ObjectName(String.format("org.zstack:name=%s", name));
mBeanServer.registerMBean(bean, mxbeanName);
} catch (Exception e) {
throw new CloudRuntimeException(e);
}
}
}