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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 408 - (show annotations) (download)
Wed Oct 7 05:06:42 2009 UTC (14 years, 7 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 package dk.thoerup.curcuitbreaker.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.curcuitbreaker.AccountingCircuitBreaker;
13 import dk.thoerup.curcuitbreaker.CircuitBreaker;
14 import dk.thoerup.curcuitbreaker.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 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
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
46 } catch (Exception e) {
47 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 }

  ViewVC Help
Powered by ViewVC 1.1.20