/[projects]/CircuitBreaker/src/dk/thoerup/circuitbreaker/jmx/JMXWrapper.java
ViewVC logotype

Contents of /CircuitBreaker/src/dk/thoerup/circuitbreaker/jmx/JMXWrapper.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1154 - (show annotations) (download)
Sun Oct 3 17:05:52 2010 UTC (13 years, 8 months ago) by torben
File size: 2156 byte(s)
Return the JMX name when object is registered

1 package dk.thoerup.circuitbreaker.jmx;
2
3 import java.lang.management.ManagementFactory;
4 import java.util.Set;
5 import java.util.TreeSet;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
8
9 import javax.management.MBeanServer;
10 import javax.management.ObjectName;
11
12 import dk.thoerup.circuitbreaker.AccountingCircuitBreaker;
13 import dk.thoerup.circuitbreaker.CircuitBreaker;
14 import dk.thoerup.circuitbreaker.CircuitBreakerManager;
15
16 public class JMXWrapper {
17 static Logger logger = Logger.getLogger(JMXWrapper.class.getName());
18
19 private static Set<ObjectName> objectNames = new TreeSet<ObjectName>();
20
21
22 public static ObjectName registerCircuitBreaker(CircuitBreaker cb) {
23 Object jmxBean;
24 String className;
25
26 if (cb instanceof AccountingCircuitBreaker) {
27 jmxBean = new JmxAccountingCircuitBreaker((AccountingCircuitBreaker)cb);
28 className = "AccountingCircuitBreaker";
29 } else {
30 jmxBean = new JmxCircuitBreaker(cb);
31 className = "CircuitBreaker";
32 }
33
34 String name = cb.getName();
35
36 try {
37
38 ObjectName beanName = new ObjectName("dk.thoerup.circuitbreaker:type=" + className + ",name=" + name);
39
40 MBeanServer server = ManagementFactory.getPlatformMBeanServer();
41 if (server.isRegistered(beanName))
42 server.unregisterMBean(beanName);
43 server.registerMBean(jmxBean, beanName);
44 objectNames.add(beanName);
45 return beanName;
46
47 } catch (Exception e) {
48 logger.log(Level.SEVERE, "Mbean failure",e );
49 return null;
50 }
51 }
52
53 public static void registerAllCircuitBreakers() {
54 CircuitBreakerManager mgr = CircuitBreakerManager.getManager();
55
56 for (String cbName : mgr.getCircuitBreakerNames()) {
57 CircuitBreaker cb = mgr.getCircuitBreaker(cbName);
58 registerCircuitBreaker(cb);
59 }
60 }
61
62 public static void unregisterAllCircuitBreakers() {
63 MBeanServer server = ManagementFactory.getPlatformMBeanServer();
64
65 for (ObjectName objName : objectNames) {
66 if (server.isRegistered(objName)) {
67 try {
68 server.unregisterMBean(objName);
69 } catch (Exception e) {
70 //At this point we don't care why it wasn't in the system - all that matter is that it's gone
71 }
72 }
73 }
74 }
75 }

  ViewVC Help
Powered by ViewVC 1.1.20