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
