我想像这样注册MBean:
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = null;
try {
name = ObjectNameProvider.getObjectName();
mbs.registerMBean(ApplicationTracker.getInstance(), name);
当我启动应用程序时,注册失败并抛出了javax.management.InstanceAlreadyExistsException,并且我无法使用JMX功能。
然而,如果我取消注册 - 如下所示重新注册MBean,一切正常,没有任何例外。 为什么?
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = null;
try {
name = ObjectNameProvider.getObjectName();
if(mbs.isRegistered(name)){
mbs.unregisterMBean(name);
}
mbs.registerMBean(ApplicationTracker.getInstance(), name);