/[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 1154 - (hide annotations) (download)
Sun Oct 3 17:05:52 2010 UTC (13 years, 8 months ago) by torben
Original Path: CircuitBreaker/src/dk/thoerup/circuitbreaker/jmx/JMXWrapper.java
File size: 2156 byte(s)
Return the JMX name when object is registered

1 torben 467 package dk.thoerup.circuitbreaker.jmx;
2 torben 402
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 467 import dk.thoerup.circuitbreaker.AccountingCircuitBreaker;
13     import dk.thoerup.circuitbreaker.CircuitBreaker;
14     import dk.thoerup.circuitbreaker.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 1154 public static ObjectName registerCircuitBreaker(CircuitBreaker cb) {
23 torben 402 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 1154 return beanName;
46 torben 402
47     } catch (Exception e) {
48     logger.log(Level.SEVERE, "Mbean failure",e );
49 torben 1154 return null;
50 torben 402 }
51 torben 406 }
52    
53     public static void registerAllCircuitBreakers() {
54     CircuitBreakerManager mgr = CircuitBreakerManager.getManager();
55 torben 402
56 torben 406 for (String cbName : mgr.getCircuitBreakerNames()) {
57     CircuitBreaker cb = mgr.getCircuitBreaker(cbName);
58     registerCircuitBreaker(cb);
59     }
60 torben 402 }
61 torben 408
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 torben 402 }

  ViewVC Help
Powered by ViewVC 1.1.20