/[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

CircuitBreaker/src/dk/thoerup/curcuitbreaker/jmx/JMXWrapper.java revision 402 by torben, Tue Oct 6 21:23:49 2009 UTC miscJava/CircuitBreaker/src/dk/thoerup/circuitbreaker/jmx/JMXWrapper.java revision 2448 by torben, Fri Mar 20 08:52:49 2015 UTC
# Line 1  Line 1 
1  package dk.thoerup.curcuitbreaker.jmx;  package dk.thoerup.circuitbreaker.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.circuitbreaker.AccountingCircuitBreaker;
13    import dk.thoerup.circuitbreaker.CircuitBreaker;
14    import dk.thoerup.circuitbreaker.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          public static void registerCircuitBreaker(CircuitBreaker cb) {          private static Set<ObjectName> objectNames = new TreeSet<ObjectName>();
20            
21            
22            public static ObjectName registerCircuitBreaker(CircuitBreaker cb) {
23                  Object jmxBean;                  Object jmxBean;
24                  String className;                  String className;
25                                    
# 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                            return beanName;
46                                                    
47                  } catch (Exception e) {                  } catch (Exception e) {
48                          logger.log(Level.SEVERE, "Mbean failure",e );                          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  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.20