Change Log for JSR 3 Maintenance Review 5

Éamonn McManus, JSR 3 Maintenance Lead

This is the Change Log for the fifth Maintenance Review of JSR 3. Questions and comments on this Change Log should be directed to jmx-spec-comments@sun.com.

This Maintenance Review complements the Maintenance Review 4 to define version 1.4 of the JMX API as originally defined by JSR 3.

The 7-digit code numbers associated with each change are identifiers in the public bug database at bugs.sun.com.

A larger set of updates to the JMX specification is planned as part of JSR 255, "JMX Specification, version 2.0". The changes proposed in this Maintenance Review are intended as interim steps towards JSR 255. These changes have all been approved by the JSR 255 Expert Group.

An updated standalone TCK will be available that reflects the changes in this Maintenance Review. In addition, it is intended that these changes will be included in the Java SE 6 release.

Contents

Clarify how MBean RuntimeExceptions are handled (5043152)

The JMX spec is unclear as to what happens when a method implementing an attribute or an operation in an MBean throws a RuntimeException. Close reading implies that it should wrap the exception in a RuntimeMBeanException, but it is not completely clear that it could not wrap it in a RuntimeOperationsException. The spec should explicitly say that it is a RuntimeMBeanException, and that RuntimeOperationsException wraps exceptions that occur before any MBean method is invoked, e.g. getAttribute with a null attribute.

Model MBeans wrap exceptions coming from methods invoked on the ManagedResource in RuntimeOperationsException, not RuntimeMBeanException.
Although this is not clearly specified, changing it would risk breaking existing code. So it is suggested that the existing behaviour be specified explicitly, , and also that it be specified that when an MBean throws a RuntimeOperationsException it is not further wrapped.

We propose to add the following text in the PDF specification for the JMX API (section 6.4.3.15, RuntimeOperationsException Class):

"If a method in an MBean itself throws a runtime exception, that exception will be wrapped in a RuntimeMBeanException, not a RuntimeOperationsException. The RuntimeOperationsException is used in two cases: when the exception occurs before the MBean is invoked (for example, an attribute name in getAttribute is null), and by Model MBeans to wrap exceptions coming from methods invoked on the Managed Resource."

We propose to add the following text in the PDF specification for the JMX API (section 6.4.3.16, RuntimeMBeanException Class):

[... This exception is built by the MBean server when a call to an MBean method throws a runtime exception.]
"However, if the exception is already a RuntimeOperationsException it is not wrapped further."