优化Mbean的registerMBean&unregisterMBean方法的冲突问题

This commit is contained in:
songqingqing
2019-04-02 19:13:20 +08:00
parent 9f763c0dbe
commit 9cd1805c00
2 changed files with 12 additions and 6 deletions
@@ -144,7 +144,9 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe
synchronized (instances) {
if (instances.size() == 0) {
try {
ObjectName objectName = new ObjectName(MBEAN_NAME);
int id = System.identityHashCode(instance.getClass());
ObjectName objectName = new ObjectName(MBEAN_NAME + ",id=" + id);
// ObjectName objectName = new ObjectName(MBEAN_NAME);
if (!mbeanServer.isRegistered(objectName)) {
mbeanServer.registerMBean(instance, objectName);
}
@@ -206,7 +208,9 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe
if (instances.size() == 0) {
try {
mbeanServer.unregisterMBean(new ObjectName(MBEAN_NAME));
int id = System.identityHashCode(instance.getClass());
ObjectName objName = new ObjectName(MBEAN_NAME + ",id=" + id);
mbeanServer.unregisterMBean(objName);
} catch (Throwable ex) {
LOG.error("unregister mbean error", ex);
}
@@ -357,8 +357,9 @@ public final class DruidStatService implements DruidStatServiceMBean {
public static void registerMBean() {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
try {
ObjectName objectName = new ObjectName(MBEAN_NAME);
int id = System.identityHashCode(instance.getClass());
ObjectName objectName = new ObjectName(MBEAN_NAME + ",id=" + id);
// ObjectName objectName = new ObjectName(MBEAN_NAME);
if (!mbeanServer.isRegistered(objectName)) {
mbeanServer.registerMBean(instance, objectName);
}
@@ -369,9 +370,10 @@ public final class DruidStatService implements DruidStatServiceMBean {
public static void unregisterMBean() {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
try {
mbeanServer.unregisterMBean(new ObjectName(MBEAN_NAME));
int id = System.identityHashCode(instance.getClass());
ObjectName objectName = new ObjectName(MBEAN_NAME + ",id=" + id);
mbeanServer.unregisterMBean(objectName);
} catch (JMException ex) {
LOG.error("unregister mbean error", ex);
}