Hello,
I have been lurking on the list for a while now and have been following the conversation about JMX and Avalon.
I've been learning Avalon slowly, and I would like to use Avalon for what I'm working on, but would like to do some things with JMX; anyhow, enough about me.


Here are some thoughts. Please feel free to set the record straight if something is incorrect and of course all comments, suggestions, flame welcome.


First, I would like to say that integrating JMX at the "Component" level into Avalon is the wrong thing to do:
* Avalon is far ahead of managing components in the true sense of the component compared to JMX
* JMX is flat in terms of relationships between MBeans, whereas Avalon components can be hierarchical
* JMX seems more geared to managing Blocks rather than smaller components


Integrating JMX at the "Block" level is the better thing to do. Given this assumption, here are the options I think we should think about w.r.t JMX integration into Avalon:

1) Extend MBeanServer to use Avalon Phoenix
- config files to initialize, stop, start blocks
- MBeanServer and Phoenix are one-in-the-same
- MBeanServer is the main[]
- Phoenix is started by MBeanServer
- Native Avalon Blocks are loaded via a wrapper MBean that is aware of all of the control interfaces for Blocks
- Phoenix is 'JMX aware' so it can call the MBeanServer and fire up MBeans or Blocks (which are wrapped around an MBean)
- The MBeanServer can load MBeans as normal BUT (MBeans) must implement some of Avalon's interfaces for blocks via a 3rd party WrapperMBean
- 3rd party MBeans will be wrapped using the AvalonMBeanWrapper (ex: JettyMBeanWrapper implements AvalonMBeanWrapper)
- This JettyMBeanWrapper will know how to define roles, dependencies, configuration etc for Jetty in relation to how Jetty fits into Avalon


2) Bootstrap Phoenix into an MBean
   - MBeanServer and Phoenix are completely independent (almost(?))
   - MBeanServer is the main[]
   - entire kernel is only start/stop able from the master MBeanServer
   - All Avalon blocks are loaded by Phoenix as normal
   - The MBeanServer can load MBeans as normal, with no control by Phoenix

3) MBeanServer is made into a block
- create a new class called AvalonMBeanServerBlock
- This block performs the normal duties of an MBeanServer but it itself managed by Phoenix
- Configuration of loaded MBeans can be passed down from the normal Avalon configuration/assembly files
- Example: This block can load Jetty without any additional work required (using Jetty's MBean interface and native configuration)
- Example: This block can load *and* configure Jetty if Avalon's configuration of blocks is tranlated into Jetty configuration (XML 2 XML transformation, or discrete setting of Jetty MBean attributes at init/runtime)



I have some diagrams but haven't had time to move them from my notebook to e-copy.
I'd be happy to write some code, as long as some people promise to help ;)



cheers Pratik


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to