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

Annotation of /miscJava/CircuitBreaker/src/main/java/dk/thoerup/circuitbreaker/jmx/JMXWrapper.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 408 - (hide annotations) (download)
Wed Oct 7 05:06:42 2009 UTC (14 years, 8 months ago) by torben
Original Path: CircuitBreaker/src/dk/thoerup/curcuitbreaker/jmx/JMXWrapper.java
File size: 2114 byte(s)
Add a unregister function as well
1 torben 402 package dk.thoerup.curcuitbreaker.jmx;
2    
3     import java.lang.management.ManagementFactory;
4 torben 408 import java.util.Set;
5     import java.util.TreeSet;
6 torben 402 import java.util.logging.Level;
7     import java.util.logging.Logger;
8    
9     import javax.management.MBeanServer;
10     import javax.management.ObjectName;
11    
12 torben 408 import dk.thoerup.curcuitbreaker.AccountingCircuitBreaker;
13     import dk.thoerup.curcuitbreaker.CircuitBreaker;
14     import dk.thoerup.curcuitbreaker.CircuitBreakerManager;
15 torben 402
16     public class JMXWrapper {
17     static Logger logger = Logger.getLogger(JMXWrapper.class.getName());
18    
19 torben 408 private static Set<ObjectName> objectNames = new TreeSet<ObjectName>();
20    
21    
22 torben 402 public static void 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 torben 408
36 torben 402 try {
37    
38 torben 405 ObjectName beanName = new ObjectName("dk.thoerup.circuitbreaker:type=" + className + ",name=" + name);
39 torben 402
40     MBeanServer server = ManagementFactory.getPlatformMBeanServer();
41     if (server.isRegistered(beanName))
42     server.unregisterMBean(beanName);
43     server.registerMBean(jmxBean, beanName);
44 torben 408 objectNames.add(beanName);
45 torben 402
46     } catch (Exception e) {
47     logger.log(Level.SEVERE, "Mbean failure",e );
48     }
49 torben 406 }
50    
51     public static void registerAllCircuitBreakers() {
52     CircuitBreakerManager mgr = CircuitBreakerManager.getManager();
53 torben 402
54 torben 406 for (String cbName : mgr.getCircuitBreakerNames()) {
55     CircuitBreaker cb = mgr.getCircuitBreaker(cbName);
56     registerCircuitBreaker(cb);
57     }
58 torben 402 }
59 torben 408
60     public static void unregisterAllCircuitBreakers() {
61     MBeanServer server = ManagementFactory.getPlatformMBeanServer();
62    
63     for (ObjectName objName : objectNames) {
64     if (server.isRegistered(objName)) {
65     try {
66     server.unregisterMBean(objName);
67     } catch (Exception e) {
68     //At this point we don't care why it wasn't in the system - all that matter is that it's gone
69     }
70     }
71     }
72     }
73 torben 402 }

  ViewVC Help
Powered by ViewVC 1.1.20