I would like to propose a binding that will allow a component to bind a
management interface to JMX allow it to be controlled by and send events
to external management systems.

We would do this by providing a "binding.jmx" extension that allowed
service interfaces provided/used by the component to be bound into an
MBeanServer provided by the runtime. External agents would connect to
the MBeanServer as usual (e.g. using standard JMX remoting).

To expose an administration interface the <binding.jmx> element would be
attached to an <entryPoint>. The binding implementation would expose the
service interface as JMX attributes or operations using the
introspection rules for Standard MBeans. One way to do this would be for
the implementation to register as a Dynamic MBean and provide MBeanInfo
obtained by introspection. We would recommend (perhaps force) that the
datatypes be such that the MBean could be registered as an Open MBean.

To raise operation events the <binding.jmx> element would be attached to
an <externalService> with an async service interface. The binding
implementation would create a Dynamic MBean to act as the source of JMX
notifications which would be generated when the service interface was
invoked. The callback interface would be exposed as the MBean's
interface allowing event recipients to call back to the originator.

This allows a component to provide a management interface to itself and
to raise external events in a way that is transparent to the management
technology. Alternative bindings could be provided for frameworks such
as SNMP or WSDM. For this reason, the binding will not provide a
mechanism for the component to access the MBeanServer itself;
alternative mechanisms may be supported by the runtime itself (for
example, by allowing the component to autowire to the MBeanServer).

Thoughts?
--
Jeremy

Reply via email to