1 |
package dk.thoerup.curcuitbreaker.jmx; |
2 |
|
3 |
import java.lang.management.ManagementFactory; |
4 |
import java.util.logging.Level; |
5 |
import java.util.logging.Logger; |
6 |
|
7 |
import javax.management.MBeanServer; |
8 |
import javax.management.ObjectName; |
9 |
|
10 |
import dk.thoerup.curcuitbreaker.*; |
11 |
|
12 |
public class JMXWrapper { |
13 |
static Logger logger = Logger.getLogger(JMXWrapper.class.getName()); |
14 |
|
15 |
public static void registerCircuitBreaker(CircuitBreaker cb) { |
16 |
Object jmxBean; |
17 |
String className; |
18 |
|
19 |
if (cb instanceof AccountingCircuitBreaker) { |
20 |
jmxBean = new JmxAccountingCircuitBreaker((AccountingCircuitBreaker)cb); |
21 |
className = "AccountingCircuitBreaker"; |
22 |
} else { |
23 |
jmxBean = new JmxCircuitBreaker(cb); |
24 |
className = "CircuitBreaker"; |
25 |
} |
26 |
|
27 |
String name = cb.getName(); |
28 |
try { |
29 |
|
30 |
ObjectName beanName = new ObjectName("dk.thoerup.circuitbreaker:type=" + className + ",name=" + name); |
31 |
|
32 |
MBeanServer server = ManagementFactory.getPlatformMBeanServer(); |
33 |
if (server.isRegistered(beanName)) |
34 |
server.unregisterMBean(beanName); |
35 |
server.registerMBean(jmxBean, beanName); |
36 |
|
37 |
} catch (Exception e) { |
38 |
logger.log(Level.SEVERE, "Mbean failure",e ); |
39 |
} |
40 |
|
41 |
} |
42 |
} |