Thanks for your reply, David. To clarify, Apache Commons is currently
used to ease the implementation of *Model MBeans*, which is a generic
Dynamic Bean. This means that a generic bean is paired
programmatically with the resource it is going to manage. This is in
contrast to coding a specific bean for a resource. We can still use
Dynamic MBeans even if we base the majority of the beans on standard
ones.
The plan for my work now is somewhat like this (in agreement with my
mentor Bernt Johnsen):
1. Refactor the current functionality to Standard MBeans:
- Stopping a database (not the derby server)
- Viewing and modifying some Derby properties
2. Expand the properties functionality. Currently this is very limited.
3. Create an MBean for NetworkServerControl, essentially making the
API available through a management interface.
I hope this will give a good start on Derby management and monitoring,
at least give something to work on further and produce some discussion
on user/developer needs. I welcome suggestions and thoughts!
Ole Gunnar
Siterer David Van Couvering <[EMAIL PROTECTED]>:
Hi, Ole. Your analysis seems reasonable. The management
requirements
for Derby are pretty minimal and pretty static, and it is always
good
to keep things as simple as possible for Derby, both for
development
and distribution/deployment. Adding more jar files also increases
the
size. I didn't know the use of Dynamic MBeans required the Apache
Commons stuff, or if that was just a quick way of implementing the
functionality. But if we don't need dynamic beans, let's keep it
simple.
David
On 7/10/07, Ole Gunnar Borstad <[EMAIL PROTECTED]> wrote:
Hi,
I am working on management and monitoring through JMX in Derby.
Prior
work on this includes a patch in Derby-1387 that has some working
functionality, i.e. viewing properties and shutting down a single
database. I think this patch shows great potential for management
features in Derby. The code uses the Apache Commons Modeler
framework
for defining Model MBeans, because developing these Beans
completely
manually is rather cumbersome and error prone. Model MBeans are
the
most flexible MBeans through the use of several metadata classes,
which enables the managed resource and management interface to be
specified at runtime.
Upon further development of this module, I have tried to analyze
the
choice of MBeans for Derby. The use of different types of MBeans
can
of course be combined, but if there is no real need for the
generic
nature of Model MBeans, it might be a better choice to go with
Standard MBeans as the main choice and not depend on any framework
like Commons. This framework implies two additional JARs for Derby
and
increasing code complexity through XML-metadata and
API-dependencies.
The advantage of using this configuration is that existing
resources
can easily be instrumented for management through an XML-metadata
file. I am not sure if this is true for Derby, because the
resources
can not always be instrumented automatically. An example is the
Derby
properties. These do not have a coherent access interface (depends
on
how properties are set or if defaults are used), so making
getter-methods for these in a management module is not trival and
should be done by hand.
The advantages of using Model MBeans and thus a framework like
Commons
seem unclear to me at this point. Coding Standard or Dynamic
MBeans
can be done efficiently without tools, and as far as I can see
they
are more than powerful enough for management of Derby.
I would appreciate any input on this matter, especially from
someone
with experience using JMX.
Ole Gunnar Borstad