db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ole Gunnar Borstad (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-1387) Add JMX extensions to Derby
Date Wed, 01 Aug 2007 08:30:52 GMT

     [ https://issues.apache.org/jira/browse/DERBY-1387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Ole Gunnar Borstad updated DERBY-1387:

    Attachment: DERBY-1387-1.stat


This patch adds a management and monitoring service to Derby through JMX extentions. The service
is designed for a client/server environment. The patch is a refactor and expansion of Sanket
Sharma's work.

No tests have been run. Only functional testing of the features has been done. No test cases
are included.


1) Deployment
Derby can be monitored locally or remotely. Both configurations use the JVM's built-in instrumentation
as the JMX agent, where password authentication and SSL support is provided.

The management functionality is implemented through 4 managed beans (MBeans):

2) VersionMBean
View Derby version information.
No operations are provided.

3) DerbySystemMBean
View and change system properties. Changes to properties are not persisted in derby.properties,
because currently no such mechanism exists in the Derby engine. Default values are displayed
as <default>, because they are not accessible through the java Properties. Derby properties
are visible through Properties only if set explicitly. There has been discussion on derby-dev
on this issue, but no JIRA-issue is up yet.

4) MDatabaseMBean
All booted databases are wrapped by a bean which provides access to database properties. Changes
are persistent.
The following operations are provided:
Stopping the database, backup, checking table consistency and adding database users. There
is also an operation to connect as a user. This authenticates the management service and is
to be used if Derby authentication is enabled.

5) NSCMBean
The public API of NetworkServerControl is made available through this bean. All methods of
this API can now be invoked from a remote machine through the management service. This includes
ping, shutdown, logging etc.


Build files are edited to compile the management service. The ManagementService and BasicManagementService
classes are compiled with JDK 1.5. My edits of the build files might not be optimal so I would
appreciate if anyone can review those.


Start Derby with management by using the system property "derby.jmx". The property value is
not relevant. Certain other system properties must also be set when starting the server-JVM
to enable the built-in JMX agent. These properties vary with local/remote and security configurations.
For details refer to the following URL:


This is an example of running with JMX agent enabled for local management and without security
java -Dcom.sun.management.jmxremote -Dderby.jmx=true org.apache.derby.drda.NetworkServerControl
start -noSecurityManager

JConsole (found in JDK_HOME/bin) can be used as the management GUI. Details in above URL.

Implementation details

- JVM platform instrumentation
The JVM has built-in instrumentation (from JDK 1.5) that enables you to monitor and manage
the JVM and instrumented applications using JMX. The Derby management service uses this for
both local and remote management.

- Modifications to Derby engine code
Derby boots the management service when the system property 'derby.jmx' is set. The module
is loaded and started through the Derby monitor as done for other services. The changes to
the Derby code are small and should hopefully not be a problem. MBeans are created when instrumented
Derby resources are booted. For example, BasicDatabase.boot() instantiates an instance of

- ManagementService
This is the management service interface (found in org.apache.derby.iapi.services.mbeans),
which holds the MBeanServer and methods to create beans. All beans should be created through
this interface. To expand with more beans, one needs to find the appropriate Derby code to
instrument, code a bean for it, and make factory methods in the ManagementService.

All beans are implemented as Standard MBeans.

API documentation is provided with the source code. The attached svn stat file lists the modifications
and added files.

> Add JMX extensions to Derby
> ---------------------------
>                 Key: DERBY-1387
>                 URL: https://issues.apache.org/jira/browse/DERBY-1387
>             Project: Derby
>          Issue Type: New Feature
>          Components: Services
>            Reporter: Sanket Sharma
>            Assignee: Ole Gunnar Borstad
>         Attachments: DERBY-1387-1.diff, DERBY-1387-1.stat, derbyjmx.patch, jmx.diff,
jmx.stat, Requirements for JMX Updated.html, Requirements for JMX.html, Requirements for JMX.zip
> This is a draft requirement specification for adding monitoring and management extensions
to Apache Derby using JMX. The requirements document has been uploaded on JIRA as well as
the Derby Wiki page at http://wiki.apache.org/db-derby/_Requirement_Specifications_for_Monitoring_%26_Management_Extensions_using_JMX
> Developers and Users are requested to please look at the document (feature list in particular)
and add their own rating to features by adding a coloumn to the table.
> Comments are welcome.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message