Make a proxy for an MXBean in a local or remote MBean Server.
If you have an MBean Server mbs containing an MXBean with ObjectNamename, and if the MXBean's management interface is described by the Java interface MyMXBean, you can construct a proxy for the MXBean like this:
MyMXBean proxy = JMX.newMXBeanProxy(mbs, name, MyMXBean.class);
Suppose, for example, MyMXBean looks like this:
public interface MyMXBean {
public String getSimpleAttribute();
public void setSimpleAttribute(String value);
public MemoryUsage getMappedAttribute();
public void setMappedAttribute(MemoryUsage memoryUsage);
public MemoryUsage someOperation(String param1, MemoryUsage param2);
}
Then:
-
proxy.getSimpleAttribute() will result in a call to mbs.getAttribute(name, "SimpleAttribute") .
-
proxy.setSimpleAttribute("whatever") will result in a call to mbs.setAttribute(name, new Attribute("SimpleAttribute", "whatever")) .
Because String is a simple type , in the sense of SimpleType, it is not changed in the context of an MXBean. The MXBean proxy behaves the same as a Standard MBean proxy (see newMBeanProxy) for the attribute SimpleAttribute .
-
proxy.getMappedAttribute() will result in a call to mbs.getAttribute("MappedAttribute"). The MXBean mapping rules mean that the actual type of the attribute MappedAttribute will be CompositeData and that is what the mbs.getAttribute call will return. The proxy will then convert the CompositeData back into the expected type MemoryUsage using the MXBean mapping rules.
-
Similarly, proxy.setMappedAttribute(memoryUsage) will convert the MemoryUsage argument into a CompositeData before calling mbs.setAttribute.
-
proxy.someOperation("whatever", memoryUsage) will convert the MemoryUsage argument into a CompositeData and call mbs.invoke. The value returned by mbs.invoke will be also be a CompositeData, and the proxy will convert this into the expected type MemoryUsage using the MXBean mapping rules.
The object returned by this method is a Proxy whose InvocationHandler is an MBeanServerInvocationHandler.
This method is equivalent to newMXBeanProxy(connection, objectName, interfaceClass, false) .