1 6 7 package org.webjmx.example; 8 9 import java.util.*; 10 import java.io.*; 11 import java.net.*; 12 import javax.servlet.*; 13 import javax.servlet.http.*; 14 import javax.management.*; 15 16 import com.sun.jdmk.comm.*; 17 18 19 import org.webjmx.adapter.*; 20 import org.webjmx.tags.JMXTaglibConstants; 21 22 34 public class AgentServlet extends HttpServlet 35 implements JMXTaglibConstants 36 { 37 private MBeanServer server = null; 38 39 41 public void init(ServletConfig config) 42 throws ServletException 43 { 44 super.init(config); 45 doInit(); 46 } 47 48 50 public void doInit() 51 throws ServletException 52 { 53 if(Boolean.getBoolean(DEBUG_PROP)) log("AgentServlet init()"); 54 List l = MBeanServerFactory.findMBeanServer(null); 55 if(Boolean.getBoolean(DEBUG_PROP)) log("MBeanServer count:" +l.size()); 56 if(l.size() > 0) 57 server = (MBeanServer)l.get(0); 58 else 59 server = MBeanServerFactory.createMBeanServer("Local"); 60 if(Boolean.getBoolean(DEBUG_PROP)) log("initalizing local server instance: " +server); 61 62 HtmlAdaptorServer html = new HtmlAdaptorServer(8086); 63 ObjectName ob_name = null; 64 try 65 { 66 if(Boolean.getBoolean(DEBUG_PROP)) com.sun.jdmk.Trace.parseTraceProperties(); 67 ob_name = new ObjectName("Adaptor:name=html,port=8086"); 68 if(Boolean.getBoolean(DEBUG_PROP)) log("OBJECT NAME: " + ob_name); 69 server.registerMBean(html, ob_name); 70 71 Enumeration e = getServletConfig().getInitParameterNames(); 72 while(e.hasMoreElements()) 73 { 74 String paramName = (String )e.nextElement(); 75 if(!paramName.startsWith("locator")) 76 continue; 77 String locator = getServletConfig().getInitParameter(paramName); 78 l = AdapterFactory.findMBeanServer(locator); 79 if(Boolean.getBoolean(DEBUG_PROP)) log("server list: " +l); 80 if(l.size() == 0) 81 return; 82 83 if(Boolean.getBoolean(DEBUG_PROP)) log("initalizing local server instance: " +server); 84 server = (MBeanServer)l.get(0); 85 if(Boolean.getBoolean(DEBUG_PROP)) log("server: " +server); 86 87 ob_name = new ObjectName("MBeanInfo", "name", "SimpleStandard"); 88 if(Boolean.getBoolean(DEBUG_PROP)) log("creating sample MBean with OBJECT NAME: " + ob_name); 89 server.createMBean("org.webjmx.example.SimpleStandard", ob_name); 90 91 ob_name = new ObjectName("MBeanInfo", "name", "SimpleDynamic"); 92 if(Boolean.getBoolean(DEBUG_PROP)) log("creating sample MBean with OBJECT NAME: " + ob_name); 93 server.createMBean("org.webjmx.example.SimpleDynamic", ob_name); 94 } 95 96 102 }catch(Exception e) 103 { 104 log("Errors initializing MBeanServers ..."); 105 e.printStackTrace(); 106 return; 107 } 108 html.start(); 109 } 110 111 113 public void destroy() 114 { 115 if(server != null) 116 MBeanServerFactory.releaseMBeanServer(server); 117 } 118 119 123 protected void processRequest(HttpServletRequest request, HttpServletResponse response) 124 throws ServletException, java.io.IOException 125 { 126 response.setContentType("text/html"); 127 java.io.PrintWriter out = response.getWriter(); 128 out.println("<html>"); 130 out.println("<head>"); 131 out.println("<title>Servlet</title>"); 132 out.println("</head>"); 133 out.println("<body>"); 134 List l = MBeanServerFactory.findMBeanServer(null); 135 for(int i = 0; i < l.size(); i++) 136 { 137 MBeanServer s = (MBeanServer)l.get(i); 138 out.println("Server: " +s +"<br>"); 139 Iterator it = ((Set)s.queryNames(null, null)).iterator(); 140 while(it.hasNext()) 141 out.println("<li>MBean: " +it.next() +"<br>"); 142 out.println("<hr>"); 143 } 144 out.println("</body>"); 145 out.println("</html>"); 146 out.close(); 147 } 148 149 153 protected void doGet(HttpServletRequest request, HttpServletResponse response) 154 throws ServletException, java.io.IOException 155 { 156 processRequest(request, response); 157 } 158 159 163 protected void doPost(HttpServletRequest request, HttpServletResponse response) 164 throws ServletException, java.io.IOException 165 { 166 processRequest(request, response); 167 } 168 169 171 public String getServletInfo() 172 { 173 return "Servlet which initializes the local and remote MBeanServers of the WEBJMX Sample App"; 174 } 175 176 public static void main(String args[]) 177 { 178 AgentServlet servlet = new AgentServlet(); 179 180 try 182 { 183 servlet.doInit(); 184 185 List l = MBeanServerFactory.findMBeanServer(null); 186 for(int i = 0; i < l.size(); i++) 187 { 188 MBeanServer s = (MBeanServer)l.get(i); 189 System.out.println("server: " +s); 190 ObjectName ob_name = new ObjectName(s.getDefaultDomain(), "name", "SimpleStandard"); 191 Set set = s.queryNames(ob_name, null); 192 System.out.println("query size: " +set.size()); 193 set = s.queryNames(new ObjectName(s.getDefaultDomain() +":name=SimpleStandard"), null); 194 System.out.println("query size: " +set.size()); 195 } 196 }catch(Exception ex) 197 { 198 ex.printStackTrace(); 199 } 200 } 201 } 202 | Popular Tags |