01: /* JFox, the OpenSource J2EE Application Server
02: *
03: * Copyright (C) 2002 huihoo.com
04: * Distributable under GNU LGPL license
05: * See the GNU Lesser General Public License for more details.
06: */
07:
08: package org.huihoo.jfox.jmx.adaptor.http;
09:
10: import java.util.Set;
11: import java.util.List;
12: import java.util.ArrayList;
13: import java.util.Iterator;
14: import java.util.Map;
15: import java.util.HashMap;
16: import java.util.Collections;
17: import java.util.Comparator;
18:
19: import javax.management.MBeanServer;
20: import javax.management.ObjectName;
21: import javax.management.ObjectInstance;
22:
23: /**
24: *
25: * @author <a href="mailto:young_yy@hotmail.com">Young Yang</a>
26: */
27:
28: public class AgentCommand extends AbstractCommand {
29:
30: public void doGet(HttpRequest request, HttpResponse response)
31: throws Exception {
32: MBeanServer server = request.getThread().getServer()
33: .getServer();
34: Map objNames = new HashMap();
35: String filterObjectName = request.getParameter("filter");
36: // System.out.println(filterObjectName);
37: ObjectName pattern = null;
38: if (filterObjectName != null
39: && filterObjectName.trim().length() != 0)
40: pattern = new ObjectName(filterObjectName);
41: Set set = server.queryMBeans(pattern, null);
42: Iterator it = set.iterator();
43: while (it.hasNext()) {
44: ObjectInstance objInstance = (ObjectInstance) it.next();
45: ObjectName objName = objInstance.getObjectName();
46: String domain = objName.getDomain();
47: if (objNames.containsKey(domain)) { // domain has been added
48: ((List) objNames.get(domain)).add(objInstance);
49: } else { // first add the domain
50: List objInstances = new ArrayList();
51: objInstances.add(objInstance);
52: objNames.put(domain, objInstances);
53: }
54: }
55:
56: for (Iterator iter = objNames.keySet().iterator(); iter
57: .hasNext();) {
58:
59: List list = (List) objNames.get(iter.next());
60: Collections.sort(list, new ObjectInstanceComparator());
61: }
62:
63: ctx.put("objNames", objNames);
64: ctx.put("mbeanCount", set.size() + "");
65: ctx.put("defaultDomain", server.getDefaultDomain());
66: ctx.put("pageName", "Agent View");
67: }
68:
69: public static void main(String[] args) {
70:
71: }
72: }
73:
74: class ObjectInstanceComparator implements Comparator {
75: public int compare(Object o1, Object o2) {
76: if (!(o1 instanceof ObjectInstance)
77: || !(o2 instanceof ObjectInstance))
78: return 0;
79: ObjectInstance oi1 = (ObjectInstance) o1;
80: ObjectInstance oi2 = (ObjectInstance) o2;
81: return oi1.getObjectName().getKeyPropertyListString()
82: .compareTo(
83: oi2.getObjectName().getKeyPropertyListString());
84:
85: }
86: }
|