use of javax.management.DynamicMBean in project tomcat by apache.
the class BaseModelMBean method getAttribute.
// key: operation val: invoke method
// private Hashtable invokeAttMap=new Hashtable();
/**
* Obtain and return the value of a specific attribute of this MBean.
*
* @param name Name of the requested attribute
*
* @exception AttributeNotFoundException if this attribute is not
* supported by this MBean
* @exception MBeanException if the initializer of an object
* throws an exception
* @exception ReflectionException if a Java reflection exception
* occurs when invoking the getter
*/
@Override
public Object getAttribute(String name) throws AttributeNotFoundException, MBeanException, ReflectionException {
// Validate the input parameters
if (name == null) {
throw new RuntimeOperationsException(new IllegalArgumentException(sm.getString("baseModelMBean.nullAttributeName")), sm.getString("baseModelMBean.nullAttributeName"));
}
if ((resource instanceof DynamicMBean) && !(resource instanceof BaseModelMBean)) {
return ((DynamicMBean) resource).getAttribute(name);
}
Method m = managedBean.getGetter(name, this, resource);
Object result = null;
try {
Class<?> declaring = m.getDeclaringClass();
// but this is the catalina class.
if (declaring.isAssignableFrom(this.getClass())) {
result = m.invoke(this, NO_ARGS_PARAM);
} else {
result = m.invoke(resource, NO_ARGS_PARAM);
}
} catch (InvocationTargetException e) {
Throwable t = e.getTargetException();
if (t == null) {
t = e;
}
if (t instanceof RuntimeException) {
throw new RuntimeOperationsException((RuntimeException) t, sm.getString("baseModelMBean.invokeError", name));
} else if (t instanceof Error) {
throw new RuntimeErrorException((Error) t, sm.getString("baseModelMBean.invokeError", name));
} else {
throw new MBeanException(e, sm.getString("baseModelMBean.invokeError", name));
}
} catch (Exception e) {
throw new MBeanException(e, sm.getString("baseModelMBean.invokeError", name));
}
// FIXME - should we validate the return type?
return result;
}
use of javax.management.DynamicMBean in project tomcat by apache.
the class MBeanUtils method createMBean.
/**
* Create, register, and return an MBean for this
* <code>ContextEnvironment</code> object.
*
* @param environment The ContextEnvironment to be managed
* @return a new MBean
* @exception Exception if an MBean cannot be created or registered
*/
public static DynamicMBean createMBean(ContextEnvironment environment) throws Exception {
String mname = createManagedName(environment);
ManagedBean managed = registry.findManagedBean(mname);
if (managed == null) {
Exception e = new Exception(sm.getString("mBeanUtils.noManagedBean", mname));
throw new MBeanException(e);
}
String domain = managed.getDomain();
if (domain == null) {
domain = mserver.getDefaultDomain();
}
DynamicMBean mbean = managed.createMBean(environment);
ObjectName oname = createObjectName(domain, environment);
if (mserver.isRegistered(oname)) {
mserver.unregisterMBean(oname);
}
mserver.registerMBean(mbean, oname);
return mbean;
}
use of javax.management.DynamicMBean in project tomcat by apache.
the class MBeanUtils method createMBean.
/**
* Create, register, and return an MBean for this
* <code>Group</code> object.
*
* @param group The Group to be managed
* @return a new MBean
* @exception Exception if an MBean cannot be created or registered
*/
static DynamicMBean createMBean(Group group) throws Exception {
String mname = createManagedName(group);
ManagedBean managed = registry.findManagedBean(mname);
if (managed == null) {
Exception e = new Exception(sm.getString("mBeanUtils.noManagedBean", mname));
throw new MBeanException(e);
}
String domain = managed.getDomain();
if (domain == null) {
domain = mserver.getDefaultDomain();
}
DynamicMBean mbean = managed.createMBean(group);
ObjectName oname = createObjectName(domain, group);
if (mserver.isRegistered(oname)) {
mserver.unregisterMBean(oname);
}
mserver.registerMBean(mbean, oname);
return mbean;
}
Aggregations