1 21 22 package uk.org.primrose.pool.jmx; 23 import com.sun.jdmk.comm.*; 24 import javax.management.*; 25 import javax.management.loading.*; 26 import javax.management.remote.JMXConnectorServer ; 27 import javax.management.remote.JMXConnectorServerFactory ; 28 import javax.management.remote.JMXServiceURL ; 29 import javax.management.NotificationBroadcaster ; 30 import java.util.*; 31 import java.io.*; 32 import java.lang.reflect.*; 33 import javax.naming.Context ; 34 import javax.naming.InitialContext ; 35 import org.jboss.naming.NonSerializableFactory; 36 37 public class MBeanUtil { 38 39 49 public static void bind(String name, Object value) throws javax.naming.NamingException { 50 try { 51 Class c = Class.forName("org.jboss.naming.NonSerializableFactory"); 52 NonSerializableFactory.bind(name, value); 53 } catch (ClassNotFoundException cnfe) { 54 Context ctx = new InitialContext (); 55 ctx.rebind(name, value); 56 } 57 } 58 59 62 public static Object lookup(String name) throws javax.naming.NamingException { 63 try { 64 Class c = Class.forName("org.jboss.naming.NonSerializableFactory"); 65 return NonSerializableFactory.lookup(name); 66 } catch (ClassNotFoundException cnfe) { 67 Context ctx = new InitialContext (); 68 return ctx.lookup(name); 69 } 70 } 71 72 73 74 protected static void unRegisterAll(MBeanServer _server, ArrayList _mbeans) { 75 _server = MBeanUtil.getMBeanServer(_server); 77 Iterator iter = _mbeans.iterator(); 78 ObjectName objName = null; 79 80 while (iter.hasNext()) { 81 objName = (ObjectName)iter.next(); 82 83 try { 85 if (_server.isRegistered(objName)) { 86 _server.unregisterMBean(objName); 87 } } catch (InstanceNotFoundException infe) { 91 infe.printStackTrace(); 92 } catch (Exception e) { 93 System.err.println("[MBeanUtil] : ERROR: " + "Error unregistering MBean!"); 94 e.printStackTrace(); 95 } 96 } 97 } 98 99 protected static void registerMBean(MBeanServer server, Object obj, ObjectName name) throws Exception { 100 try { 101 server.registerMBean(obj, name); 102 } catch (InstanceAlreadyExistsException e) { 103 server.unregisterMBean(name); 104 server.registerMBean(obj, name); 105 } 106 } 107 108 protected static void unRegisterSingle(MBeanServer _server, ArrayList _mbeans, String poolQueue) { 109 _server = MBeanUtil.getMBeanServer(_server); 111 Iterator iter = _mbeans.iterator(); 112 ObjectName objName = null; 113 while (iter.hasNext()) { 114 objName = (ObjectName)iter.next(); 115 try { 116 if (objName.toString().indexOf(poolQueue) != -1) { 119 _server.unregisterMBean(objName); 121 } 122 } catch (Exception e) { 123 System.err.println("[MBeanUtil] : ERROR: " + "Error unregistering MBean!"); 124 e.printStackTrace(); 125 } 126 } 127 } 128 129 142 143 148 public static MBeanServer getMBeanServer (MBeanServer _server) { 149 if (_server == null) { 150 ArrayList mbeanServers = MBeanServerFactory.findMBeanServer(null); 151 Iterator iter = mbeanServers.iterator(); 152 int aa = 1; 153 while (iter.hasNext()) { 154 MBeanServer mbs = (MBeanServer)iter.next(); 155 Set set = mbs.queryMBeans(null, null); 156 Iterator iter2 = set.iterator(); 157 while (iter2.hasNext()) { 158 ObjectInstance obji = (ObjectInstance)iter2.next(); 159 } 161 aa++; 162 } 163 _server = MBeanServerFactory.createMBeanServer(); 165 } 166 return _server; 167 } 168 169 173 protected static HtmlAdaptorServer createHTMLAdapter (HtmlAdaptorServer _html, MBeanServer _server, ArrayList _mbeans, String user, String password, int portNumber) { 174 _html = new HtmlAdaptorServer(portNumber); 175 ObjectName html_name = null; 176 if (user.equals("none") && password.equals("none")) { 177 System.err.println("WARNING : The user and password for the web mnagement tool are set to \"none\", so I am NOT applying authentication !"); 178 } else { 179 AuthInfo auth = new AuthInfo(user, password); 180 _html.addUserAuthenticationInfo(auth); 181 } 182 try { 183 html_name = new ObjectName("Adaptor:name=html,port=" + portNumber); 184 _server.registerMBean(_html, html_name); 185 _mbeans.add(html_name); 186 } catch (Exception e) { 187 e.printStackTrace(); 188 return null; 189 } 190 _html.start(); 191 192 return _html; 193 194 } 195 196 protected static Class getClassFromString (String className) throws ClassNotFoundException { 197 Class ret = null; 198 if (className.equals(Boolean.TYPE.getName())) 199 ret = Boolean.TYPE; 200 else if (className.equals(Character.TYPE.getName())) 201 ret = Character.TYPE; 202 else if (className.equals(Byte.TYPE.getName())) 203 ret = Byte.TYPE; 204 else if (className.equals(Short.TYPE.getName())) 205 ret = Short.TYPE; 206 else if (className.equals(Integer.TYPE.getName())) 207 ret = Integer.TYPE; 208 else if (className.equals(Long.TYPE.getName())) 209 ret = Long.TYPE; 210 else if (className.equals(Float.TYPE.getName())) 211 ret = Float.TYPE; 212 else if (className.equals(Double.TYPE.getName())) 213 ret = Double.TYPE; 214 else if (className.equals(Void.TYPE.getName())) 215 ret = Void.TYPE; 216 else 221 ret = Class.forName(className); 222 return ret; 223 } 224 225 } | Popular Tags |