1 |
torben |
402 |
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." + 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 |
|
|
} |