use of javax.management.InstanceAlreadyExistsException in project presto by prestodb.
the class RebindSafeMBeanServer method registerMBean.
/**
* Delegates to the wrapped mbean server, but if a mbean is already registered
* with the specified name, the existing instance is returned.
*/
@Override
public ObjectInstance registerMBean(Object object, ObjectName name) throws MBeanRegistrationException, NotCompliantMBeanException {
while (true) {
try {
// try to register the mbean
return mbeanServer.registerMBean(object, name);
} catch (InstanceAlreadyExistsException ignored) {
}
try {
// a mbean is already installed, try to return the already registered instance
ObjectInstance objectInstance = mbeanServer.getObjectInstance(name);
log.debug("%s already bound to %s", name, objectInstance);
return objectInstance;
} catch (InstanceNotFoundException ignored) {
// the mbean was removed before we could get the reference
// start the whole process over again
}
}
}
use of javax.management.InstanceAlreadyExistsException in project presto by prestodb.
the class RebindSafeMBeanServer method registerMBean.
/**
* Delegates to the wrapped mbean server, but if a mbean is already registered
* with the specified name, the existing instance is returned.
*/
@Override
public ObjectInstance registerMBean(Object object, ObjectName name) throws MBeanRegistrationException, NotCompliantMBeanException {
while (true) {
try {
// try to register the mbean
return mbeanServer.registerMBean(object, name);
} catch (InstanceAlreadyExistsException ignored) {
}
try {
// a mbean is already installed, try to return the already registered instance
ObjectInstance objectInstance = mbeanServer.getObjectInstance(name);
log.debug("%s already bound to %s", name, objectInstance);
return objectInstance;
} catch (InstanceNotFoundException ignored) {
// the mbean was removed before we could get the reference
// start the whole process over again
}
}
}
use of javax.management.InstanceAlreadyExistsException in project quasar by puniverse.
the class SimpleMBean method registerMBean.
protected void registerMBean() {
try {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName mxbeanName = new ObjectName(name);
mbs.registerMBean(this, mxbeanName);
this.registered = true;
} catch (InstanceAlreadyExistsException ex) {
throw new RuntimeException(ex);
} catch (MBeanRegistrationException ex) {
ex.printStackTrace();
} catch (NotCompliantMBeanException ex) {
throw new AssertionError(ex);
} catch (MalformedObjectNameException ex) {
throw new AssertionError(ex);
}
}
use of javax.management.InstanceAlreadyExistsException in project redisson by redisson.
the class JCacheManager method enableManagement.
@Override
public void enableManagement(String cacheName, boolean enabled) {
checkNotClosed();
if (cacheName == null) {
throw new NullPointerException();
}
JCache<?, ?> cache = caches.get(cacheName);
if (cache == null) {
throw new NullPointerException();
}
if (enabled) {
JCacheManagementMXBean statBean = managementBeans.get(cache);
if (statBean == null) {
statBean = new JCacheManagementMXBean(cache);
JCacheManagementMXBean oldBean = managementBeans.putIfAbsent(cache, statBean);
if (oldBean != null) {
statBean = oldBean;
}
}
try {
ObjectName objectName = queryNames("Configuration", cache);
if (mBeanServer.queryNames(objectName, null).isEmpty()) {
mBeanServer.registerMBean(statBean, objectName);
}
} catch (MalformedObjectNameException e) {
throw new CacheException(e);
} catch (InstanceAlreadyExistsException e) {
throw new CacheException(e);
} catch (MBeanRegistrationException e) {
throw new CacheException(e);
} catch (NotCompliantMBeanException e) {
throw new CacheException(e);
}
} else {
unregisterManagementBean(cache);
}
cache.getConfiguration(JCacheConfiguration.class).setManagementEnabled(enabled);
}
use of javax.management.InstanceAlreadyExistsException in project spring-framework by spring-projects.
the class MBeanRegistrationSupport method doRegister.
/**
* Actually register the MBean with the server. The behavior when encountering
* an existing MBean can be configured using {@link #setRegistrationPolicy}.
* @param mbean the MBean instance
* @param objectName the suggested ObjectName for the MBean
* @throws JMException if the registration failed
*/
protected void doRegister(Object mbean, ObjectName objectName) throws JMException {
ObjectName actualObjectName;
synchronized (this.registeredBeans) {
ObjectInstance registeredBean = null;
try {
registeredBean = this.server.registerMBean(mbean, objectName);
} catch (InstanceAlreadyExistsException ex) {
if (this.registrationPolicy == RegistrationPolicy.IGNORE_EXISTING) {
if (logger.isDebugEnabled()) {
logger.debug("Ignoring existing MBean at [" + objectName + "]");
}
} else if (this.registrationPolicy == RegistrationPolicy.REPLACE_EXISTING) {
try {
if (logger.isDebugEnabled()) {
logger.debug("Replacing existing MBean at [" + objectName + "]");
}
this.server.unregisterMBean(objectName);
registeredBean = this.server.registerMBean(mbean, objectName);
} catch (InstanceNotFoundException ex2) {
logger.error("Unable to replace existing MBean at [" + objectName + "]", ex2);
throw ex;
}
} else {
throw ex;
}
}
// Track registration and notify listeners.
actualObjectName = (registeredBean != null ? registeredBean.getObjectName() : null);
if (actualObjectName == null) {
actualObjectName = objectName;
}
this.registeredBeans.add(actualObjectName);
}
onRegister(actualObjectName, mbean);
}
Aggregations