Make a proxy for an MXBean in a local or remote
MBean Server.
If you have an MBean Server mbs
containing an
MXBean with ObjectName
name
, 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)
.
Returns:
the new proxy instance.
Parameters:
-
connection - the MBean server to forward to.
-
objectName - the name of the MBean within
{@code connection} to forward to.
-
interfaceClass - the MXBean interface,
which will also be implemented by the returned proxy.
-
T - allows the compiler to know that if the {@code
interfaceClass} parameter is {@code MyMXBean.class}, for
example, then the return type is {@code MyMXBean}.