001 package org.shiftone.jrat.core.jmx;
002
003
004 import org.shiftone.jrat.core.Environment;
005 import org.shiftone.jrat.util.log.Logger;
006
007
008 /**
009 * @author jeff@shiftone.org (Jeff Drost)
010 */
011 public class JmxRegistryFactory {
012
013 private static final Logger LOG = Logger.getLogger(JmxRegistryFactory.class);
014
015 public static JmxRegistry createJmxRegistry() {
016
017 JmxRegistry registry = NullJmxRegistry.INSTANCE;
018 boolean enabled = Environment.getSettings().isJmxEnabled();
019 boolean create = Environment.getSettings().isMBeanServerCreationEnabled();
020
021 if (enabled && (isJMXAvalible() == false)) {
022 LOG.info("MBeanServer is not available in this environment. Disabling JMX.");
023
024 enabled = false;
025 }
026
027 if (enabled) {
028 try {
029 if (create) {
030 registry = new ServerJmxRegistry(true);
031 } else {
032 registry = new WaitingJmxRegistry(new ServerJmxRegistry(false));
033 }
034 }
035 catch (Exception e) {
036 LOG.error("failed to initialize JMX", e);
037 }
038 }
039
040 return registry;
041 }
042
043
044 private static boolean isJMXAvalible() {
045
046 try {
047 Class.forName("javax.management.MBeanServer");
048
049 return true;
050 }
051 catch (Exception e) {
052 return false;
053 }
054 }
055 }