# Introduction to the Derby MBeans

Derby provides the MBeans described in this section.

The public API documentation for each Derby MBean describes its features in detail.

## VersionMBean

`VersionMBean` exposes version information about the running Derby system jar file.

- Interface: `org.apache.derby.mbeans.VersionMBean`
- Implementation: `org.apache.derby.iapi.services.info.Version` (not in the public API)
- ObjectName: `org.apache.derby:type=Version,system=<sysID>,jar=derby.jar` (monitors `derby.jar`, the Derby engine), or `org.apache.derby:type=Version,system=<sysID>,jar=derbynet.jar` (monitors `derbynet.jar`, the server)
- Instruments: `org.apache.derby.iapi.services.info.ProductVersionHolder`

## JDBCMBean

`JDBCMBean` exposes information about the JDBC driver.

- Interface: `org.apache.derby.mbeans.JDBCMBean`
- Implementation: `org.apache.derby.jdbc.JDBC` (not in the public API)
- ObjectName: `org.apache.derby:type=JDBC,system=<sysID>`
- Instruments: `org.apache.derby.jdbc.InternalDriver` and `org.apache.derby.iapi.services.info.JVMInfo`

## ManagementMBean

`ManagementMBean` manages the state of the Derby MBeans (registered or not).

- Interface `org.apache.derby.mbeans.ManagementMBean`
- Implementation: `org.apache.derby.mbeans.Management` (part of the public API; may be registered by JMX clients)
- Extended by: `org.apache.derby.iapi.services.jmx.ManagementService` (interface; not in the public API), with the following implementations:
  - `org.apache.derby.impl.services.jmx.JMXManagementService` (not public)
  - `org.apache.derby.impl.services.jmxnone.NoManagementService` (not in the public API; empty implementation for environments without the required JMX support)
- ObjectName: `org.apache.derby:type=Management,system=<sysID>` when registered by Derby
- Instruments: `org.apache.derby.impl.services.jmx.JMXManagementService`

## NetworkServerMBean

`NetworkServerMBean` monitors and manages a running instance of the Network Server.

- Interface: `org.apache.derby.mbeans.drda.NetworkServerMBean`
- Implementation: `org.apache.derby.impl.drda.NetworkServerMBeanImpl` (not in the public API)
- ObjectName: `org.apache.derby:type=NetworkServer,system=<sysID>`
- Instruments: `org.apache.derby.impl.drda.NetworkServerControlImpl`

## CacheManagerMBean

`CacheManagerMBean` monitors the page cache, the container cache, and the statement cache of a running database instance.

- Interface: `org.apache.derby.mbeans.CacheManagerMBean`
- Implementation: `org.apache.derby.impl.services.cache.ConcurrentCacheMBeanImpl` (not in the public API)
- ObjectName: `org.apache.derby:type=CacheManager,name=PageCache,db=<databaseDir>,system=<sysID>` (monitors the page cache), or `org.apache.derby:type=CacheManager,name=ContainerCache,db=<databaseDir>,system=<sysID>` (monitors the container cache), or `org.apache.derby:type=CacheManager,name=StatementCache,db=<databaseDir>,system=<sysID>` (monitors the statement cache)
- Instruments: `org.apache.derby.impl.services.cache.ConcurrentCache`

For security reasons, JDK 20 restricted the deserialization of objects by remote MBeans. You will need to loosen those restrictions if you see the following message when accessing the `org.apache.derby.mbeans.CacheManagerMBean`:

    java.io.InvalidClassException: filter status: REJECTED

To loosen the restrictions, you must relax the default deserialization filter declared in $JAVA_HOME/conf/management/management.properties. Edit that file in the JVM of your JMX client. The following liberal deserialization filter will work with `org.apache.derby.mbeans.CacheManagerMBean`:

    com.sun.management.jmxremote.serial.filter.pattern=*

Parent topic: Using Java Management Extensions (JMX) technology
Related reference
Enabling and disabling JMX
Using JConsole to access the Derby MBeans
Using custom Java code to access the Derby MBeans
Troubleshooting JMX connection issues