A JMX implementation based on MX4J

- TODO 1 : only supports standard and dynamic mbeans (no model nor open)
- TODO 2 : does not rely on BCEL for dynamic invocation
- TODO 3 : does not rely on service binder implementation
Quick start guide

1) Install the logger

  -> obr start "Log Reader"
  Installing dependency: Log Service
  Installing: Log Reader
  INFO : 5 : Logger.start : 1.0.0
  INFO : 5 : BundleEvent.STARTED

2) Install the http connector

  -> obr start "JMX-MX4J http connector"
  Installing dependency: JMX-MX4J Agent Service
  Installing: JMX-MX4J http connector
  INFO : 6 : BundleEvent.INSTALLED
  INFO : 7 : BundleEvent.INSTALLED
  INFO : 6 : Starting JMX Agent 2.0.0
  Created MBeanServer with ID: e0b6f5:1007166b3d1:-8000:portable:1
  INFO : 6 : ServiceEvent.REGISTERED
  INFO : 6 : JMX Agent started 2.0.0
  INFO : 6 : BundleEvent.STARTED
  INFO : 7 : Starting JMX Http Connector 2.0.0
  INFO : 7 : HttpAdaptor server listening on port 8082
  INFO : 7 : Started JMX Http Connector 2.0.0
  INFO : 7 : BundleEvent.STARTED
  INFO : 7 : HttpAdaptor version 2.0 Beta 1 startedJMX-MX4J http connector
This starts the JMX agent and an http connector on it (port 8082). You can now access the gateway through http://localhost:8082/
That's all, for the beginning...

From now on, you can continue with :
1) How to connect a remote supervising platform like MC4J
2) How do I install my specific mbeans

JMX Remoting with MC4J

The remoting for MX4J relies on an rmiregistry, and a rmiconnector for JMX.
  -> obr start "RMI registry"
  Installing: RMI registry
  INFO : 8 : BundleEvent.INSTALLED
  INFO : 8 : Starting RMI Registry 2.0.0
  INFO : 8 : RMI Registry started 2.0.0
  INFO : 8 : BundleEvent.STARTED
  -> obr start "JMX-MX4J RMI connector"
  Installing: JMX-MX4J RMI connector
  INFO : 9 : BundleEvent.INSTALLED
  INFO : 9 : Starting JMX Rmi Connector 2.0.0
  INFO : 9 : Normalizing protocol: rmi --> rmi
  DEBUG : 9 : Provider packages in the environment: null
  DEBUG : 9 : Packages in the system property 'jmx.remote.protocol.provider.pkgs': null
  DEBUG : 9 : Provider packages list is: mx4j.remote.provider|mx4j.tools.remote.provider
  DEBUG : 9 : Provider classloader in the environment: org.ungoverned.moduleloader.ModuleClassLoader@c931fc
  WARNING : 9 : Provider classloader added to the environment
  DEBUG : 9 : Provider package: mx4j.remote.provider
  DEBUG : 9 : Loading class: mx4j.remote.provider.rmi.ServerProvider
  ************ RMI Server null
  INFO : 9 : Normalizing protocol: rmi --> rmi
  DEBUG : 9 : Packages in the system property 'mx4j.remote.resolver.pkgs': null
  DEBUG : 9 : Resolver packages list is: mx4j.remote.resolver|mx4j.tools.remote.resolver
  DEBUG : 9 : Resolver package: mx4j.remote.resolver
  DEBUG : 9 : Loading class: mx4j.remote.resolver.rmi.RMIResolver
  ************ RMI After javax.management.remote.rmi.RMIJRMPServerImpl@92bbba
  DEBUG : 9 : JMXServiceURL for binding is: 'service:jmx:rmi://localhost/jndi/jrmp'
  DEBUG : 9 : JMXServiceURL path for binding is: 'jrmp'
  DEBUG : 9 : Bound javax.management.remote.rmi.RMIJRMPServerImpl@92bbba to jrmp
  INFO : 9 : RMIConnectorServer started at: service:jmx:rmi://localhost/jndi/jrmp
  INFO : 9 : JMX Rmi Connector started 2.0.0
  INFO : 9 : BundleEvent.STARTED
Now you can install and run MC4J console.
For MC4J you need to choose :
  1. JSR160 connexion type
  2. The connexion string is something like : service:jmx:rmi:///jndi/rmi://localhost:1099/jrmp