1 5 package net.sf.panoptes.registry; 6 7 import java.io.IOException ; 8 import java.util.Collection ; 9 import java.util.HashMap ; 10 11 import javax.management.InstanceNotFoundException ; 12 import javax.management.IntrospectionException ; 13 import javax.management.MalformedObjectNameException ; 14 import javax.management.ObjectName ; 15 import javax.management.ReflectionException ; 16 17 import net.sf.panoptes.component.jmx.model.MBeanWrapper; 18 import net.sf.panoptes.component.jmx.model.MBeanServerNode; 19 import net.sf.panoptes.component.jmx.model.ServerRegistry; 20 21 import org.apache.commons.logging.Log; 22 import org.apache.commons.logging.LogFactory; 23 24 30 public class AliasRegistry { 31 32 public HashMap aliases = new HashMap (); 33 private Log log = LogFactory.getLog(getClass()); 34 35 private static AliasRegistry instance; 36 37 private AliasRegistry() { 38 try { 39 aliases.put("servers", new Alias(new ObjectName ("jboss.system:type=Server"), true)); 40 aliases.put( 41 "serverInfo", 42 new Alias(new ObjectName ("jboss.system:type=ServerInfo"), false)); 43 aliases.put( 44 "mainDeployer", 45 new Alias(new ObjectName ("jboss.system:service=MainDeployer"), false)); 46 } catch (MalformedObjectNameException e) { 47 e.printStackTrace(); 49 } 50 } 51 52 public static AliasRegistry getInstance() { 53 if (instance == null) 54 instance = new AliasRegistry(); 55 return instance; 56 } 57 58 public Object get(String aliasName, MBeanServerNode server) 59 throws InstanceNotFoundException , IntrospectionException , ReflectionException , IOException { 60 if (!aliases.containsKey(aliasName)) { 61 log.warn("Alias '" + aliasName + "' is not bound"); 62 return null; 63 } else { 64 Collection s; 65 Alias alias = (Alias) aliases.get(aliasName); 66 if (alias.isGlobal()) { 67 s = ServerRegistry.getInstance().queryMBeans(alias.getObjectName(), null); 68 if (s.size() == 1) 69 return (MBeanWrapper) s.iterator().next(); 71 else 72 return s.toArray(); 73 74 } else { 75 s = server.getServerConnection().queryNames(alias.getObjectName(), null); 76 if (s.size() == 1) 77 return new MBeanWrapper(server, (ObjectName ) s.iterator().next()); 79 else 80 return s.toArray(); 81 } 82 } 83 } 84 85 public static class Context { 86 private MBeanWrapper component; 87 public Context(MBeanWrapper component) { 88 this.component = component; 89 } 90 91 public Object get(String alias) 92 throws InstanceNotFoundException , IntrospectionException , ReflectionException , IOException { 93 return getInstance().get(alias, component.getServer()); 94 } 95 96 102 public Object get(String alias, MBeanWrapper mbean) throws InstanceNotFoundException , IntrospectionException , ReflectionException , IOException { 103 return getInstance().get(alias, mbean.getServer()); 104 } 105 } 106 107 } 108 | Popular Tags |