1 87 package org.codehaus.loom.components.manager; 88 89 import javax.management.MBeanServer ; 90 import javax.management.MalformedObjectNameException ; 91 import javax.management.ObjectName ; 92 93 import org.codehaus.loom.interfaces.ContainerConstants; 94 import org.codehaus.loom.interfaces.LoomException; 95 import org.codehaus.metaclass.jmx.MBeanBinder; 96 import org.codehaus.spice.salt.i18n.ResourceManager; 97 import org.codehaus.spice.salt.i18n.Resources; 98 99 100 107 public abstract class AbstractJMXManager 108 extends AbstractSystemManager 109 { 110 private static final Resources REZ = 111 ResourceManager.getPackageResources( AbstractJMXManager.class ); 112 113 private static final MBeanBinder BINDER = new MBeanBinder(); 114 private MBeanServer m_mBeanServer; 115 116 public void initialize() 117 throws Exception  118 { 119 super.initialize(); 120 m_mBeanServer = createMBeanServer(); 121 } 122 123 public void dispose() 124 { 125 m_mBeanServer = null; 126 super.dispose(); 127 } 128 129 138 protected Object export( final String name, 139 final Object object ) 140 throws LoomException 141 { 142 try 143 { 144 BINDER.bindMBean( object, 145 createObjectName( name ), 146 getMBeanServer() ); 147 return object; 148 } 149 catch( final Exception e ) 150 { 151 final String message = REZ.format( "jmxmanager.error.export.fail", 152 name ); 153 getLogger().error( message, e ); 154 throw new LoomException( message, e ); 155 } 156 } 157 158 165 protected void unexport( final String name, 166 final Object exportedObject ) 167 throws LoomException 168 { 169 try 170 { 171 BINDER.unbindMBean( exportedObject, 172 createObjectName( name ), 173 getMBeanServer() ); 174 } 175 catch( final Exception e ) 176 { 177 final String message = 178 REZ.format( "jmxmanager.error.unexport.fail", name ); 179 throw new LoomException( message, e ); 180 } 181 } 182 183 protected MBeanServer getMBeanServer() 184 { 185 return m_mBeanServer; 186 } 187 188 192 protected abstract MBeanServer createMBeanServer() 193 throws Exception ; 194 195 202 private ObjectName createObjectName( final String name ) 203 throws MalformedObjectNameException  204 { 205 return new ObjectName ( ContainerConstants.SOFTWARE + ":" + name ); 206 } 207 } 208 | Popular Tags |