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 }