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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 402 by torben, Tue Oct 6 21:23:49 2009 UTC revision 408 by torben, Wed Oct 7 05:06:42 2009 UTC
# Line 1  Line 1 
1  package dk.thoerup.curcuitbreaker.jmx;  package dk.thoerup.curcuitbreaker.jmx;
2    
3  import java.lang.management.ManagementFactory;  import java.lang.management.ManagementFactory;
4    import java.util.Set;
5    import java.util.TreeSet;
6  import java.util.logging.Level;  import java.util.logging.Level;
7  import java.util.logging.Logger;  import java.util.logging.Logger;
8    
9  import javax.management.MBeanServer;  import javax.management.MBeanServer;
10  import javax.management.ObjectName;  import javax.management.ObjectName;
11    
12  import dk.thoerup.curcuitbreaker.*;  import dk.thoerup.curcuitbreaker.AccountingCircuitBreaker;
13    import dk.thoerup.curcuitbreaker.CircuitBreaker;
14    import dk.thoerup.curcuitbreaker.CircuitBreakerManager;
15    
16  public class JMXWrapper {  public class JMXWrapper {
17          static Logger logger = Logger.getLogger(JMXWrapper.class.getName());          static Logger logger = Logger.getLogger(JMXWrapper.class.getName());
18                    
19            private static Set<ObjectName> objectNames = new TreeSet<ObjectName>();
20            
21            
22          public static void registerCircuitBreaker(CircuitBreaker cb) {          public static void registerCircuitBreaker(CircuitBreaker cb) {
23                  Object jmxBean;                  Object jmxBean;
24                  String className;                  String className;
# Line 25  public class JMXWrapper { Line 32  public class JMXWrapper {
32                  }                  }
33                                    
34                  String name = cb.getName();                  String name = cb.getName();
35                    
36                  try {                  try {
37                                                    
38                          ObjectName beanName = new ObjectName("dk.thoerup.circuitbreaker." + className + ":name=" + name);                          ObjectName beanName = new ObjectName("dk.thoerup.circuitbreaker:type=" + className + ",name=" + name);
39                                                    
40                          MBeanServer server = ManagementFactory.getPlatformMBeanServer();                          MBeanServer server = ManagementFactory.getPlatformMBeanServer();
41                          if (server.isRegistered(beanName))                          if (server.isRegistered(beanName))
42                                  server.unregisterMBean(beanName);                                  server.unregisterMBean(beanName);
43                          server.registerMBean(jmxBean, beanName);                          server.registerMBean(jmxBean, beanName);
44                            objectNames.add(beanName);
45                                                    
46                  } catch (Exception e) {                  } catch (Exception e) {
47                          logger.log(Level.SEVERE, "Mbean failure",e );                          logger.log(Level.SEVERE, "Mbean failure",e );
48                  }                  }
49            }
50            
51            public static void registerAllCircuitBreakers() {
52                    CircuitBreakerManager mgr = CircuitBreakerManager.getManager();
53                    
54                    for (String cbName : mgr.getCircuitBreakerNames()) {
55                            CircuitBreaker cb = mgr.getCircuitBreaker(cbName);
56                            registerCircuitBreaker(cb);
57                    }
58            }
59            
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  }  }

Legend:
Removed from v.402  
changed lines
  Added in v.408

  ViewVC Help
Powered by ViewVC 1.1.20