1 16 package org.apache.catalina.storeconfig; 17 18 import java.io.InputStream ; 19 20 import javax.management.MBeanServer ; 21 import javax.management.ObjectName ; 22 import javax.management.modelmbean.ModelMBean ; 23 24 import org.apache.catalina.Lifecycle; 25 import org.apache.catalina.LifecycleEvent; 26 import org.apache.catalina.LifecycleListener; 27 import org.apache.catalina.core.StandardServer; 28 import org.apache.catalina.mbeans.MBeanUtils; 29 import org.apache.commons.logging.Log; 30 import org.apache.commons.logging.LogFactory; 31 import org.apache.commons.modeler.ManagedBean; 32 import org.apache.commons.modeler.Registry; 33 34 39 public class StoreConfigLifecycleListener implements LifecycleListener { 40 private static Log log = LogFactory 41 .getLog(StoreConfigLifecycleListener.class); 42 43 IStoreConfig storeConfig; 44 45 private String storeConfigClass = "org.apache.catalina.storeconfig.StoreConfig"; 46 47 private String storeRegistry = null; 48 49 54 public void lifecycleEvent(LifecycleEvent event) { 55 if (Lifecycle.AFTER_START_EVENT.equals(event.getType())) { 56 if (event.getSource() instanceof StandardServer) { 57 createMBean(); 58 } 59 } 60 } 61 62 66 protected void createMBean() { 67 StoreLoader loader = new StoreLoader(); 68 try { 69 Class clazz = Class.forName(getStoreConfigClass(), true, this 70 .getClass().getClassLoader()); 71 storeConfig = (IStoreConfig) clazz.newInstance(); 72 if (null == getStoreRegistry()) 73 loader.load(); 75 else 76 loader.load(getStoreRegistry()); 78 storeConfig.setRegistry(loader.getRegistry()); 80 } catch (Exception e) { 81 log.error("createMBean load", e); 82 return; 83 } 84 MBeanServer mserver = MBeanUtils.createServer(); 85 InputStream descriptor = null; 86 try { 87 ObjectName objectName = new ObjectName ("Catalina:type=StoreConfig" ); 88 if (!mserver.isRegistered(objectName)) { 89 descriptor = this.getClass().getResourceAsStream( 90 "mbeans-descriptors.xml"); 91 Registry registry = MBeanUtils.createRegistry(); 92 registry.loadMetadata(descriptor); 93 mserver.registerMBean(getManagedBean(storeConfig), objectName); 94 } 95 } catch (Exception ex) { 96 log.error("createMBean register MBean", ex); 97 98 } finally { 99 if (descriptor != null) { 100 try { 101 descriptor.close(); 102 descriptor = null; 103 } catch (Exception ex) { 104 log.error("createMBean register MBean", ex); 105 } 106 } 107 } 108 } 109 110 117 protected ModelMBean getManagedBean(Object object) throws Exception { 118 ManagedBean managedBean = Registry.getRegistry(null, null) 119 .findManagedBean(object.getClass().getName()); 120 return managedBean.createMBean(object); 121 } 122 123 126 public IStoreConfig getStoreConfig() { 127 return storeConfig; 128 } 129 130 134 public void setStoreConfig(IStoreConfig storeConfig) { 135 this.storeConfig = storeConfig; 136 } 137 138 141 public String getStoreConfigClass() { 142 return storeConfigClass; 143 } 144 145 149 public void setStoreConfigClass(String storeConfigClass) { 150 this.storeConfigClass = storeConfigClass; 151 } 152 153 156 public String getStoreRegistry() { 157 return storeRegistry; 158 } 159 160 164 public void setStoreRegistry(String storeRegistry) { 165 this.storeRegistry = storeRegistry; 166 } 167 } | Popular Tags |