JDK-6278707 : Updates to MXBean specification
  • Type: Enhancement
  • Component: core-svc
  • Sub-Component: javax.management
  • Affected Version: 6
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2005-06-01
  • Updated: 2017-05-16
  • Resolved: 2005-07-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6 b45Fixed
Related Reports
Relates :  
Description
After review within the JMX and serviceability teams and feedback from Quality Engineers and the JSR 255 Expert Group, a number of changes are proposed to the MXBean specification as integrated into b40 of Mustang.

* MBeanServerInvocationHandler acquires getters to retrieve the
  parameters that were supplied to the constructor:

  MBeanServerConnection getMBeanServerConnection();
  ObjectName getObjectName();
  boolean isMXBean();

  Specified: MBeanServerInvocationHandler javadoc.

* A new method in javax.management.JMX tests whether a Class is an
  MXBean interface:

  public boolean isMXBeanInterface(Class<?> interfaceClass);

  Specified: javax.management.JMX javadoc.

* The class javax.management.StandardMBean implements the
  MBeanRegistration interface.  When it is used to construct an
  MXBean, this allows it to track the name under which the MXBean is
  registered, in order to handle inter-MXBean references correctly.
  In the existing implementation, this was done by a back door between
  the MBean Server and this class, but that isn't available to a
  replacement MBean Server substituted via the MBeanServerBuilder
  mechanism.

  Existing subclasses of StandardMBean that already implement
  MBeanRegistration cannot be MXBeans since user MXBeans didn't exist
  in Tiger.  The spec recommends that new code that subclasses
  StandardMBean and implements MBeanRegistration insert the
  appropriate super.preRegister etc calls.

  Specified: StandardMBean javadoc.

* Standard MBeans and MXBeans have a new Descriptor field "mxbean"
  with value "true" or "false" as appropriate.  This field is also
  present in every instance of the StandardMBean class.

  Specified: Descriptor javadoc.

* A number of minor changes are made to the MXBean mapping rules
  describing how to reconstruct an object from a CompositeData:

  - A clearer separation is made between the conditions that must hold
    for a given rule to apply, and the conditions that mean that the
    object is not reconstructible.  If one of the second set of
    conditions is not met, later rules are not tried.

  - The order of the rules is changed.  If a class has a constructor
    with a @PropertyNames annotation, then that is preferred even if
    the class also has a zero-arg constructor and a setter for every
    getter.

  - If more than one constructor has a @PropertyNames annotation, then
    the constructor to use must be unambiguous regardless of what
    items are present in any CompositeData.  Previously some cases of
    ambiguity were only noticed when a given CompositeData instance
    was being translated.

  Specified: javax.management.MXBean javadoc, section "Reconstructing
  an instance of Java type J from a CompositeData".

* For compatibility with the existing java.lang.management
  specification, when a primitive type such as int appears in a
  parameter or return value of a method in an MXBean interface, the
  corresponding MBeanParameterInfo, MBeanAttributeInfo, or
  MBeanOperationInfo must return "int" from its getType() or
  getReturnType() method.  This means that it cannot be an
  OpenMBeanParameterInfo etc, which in turn means that the overall
  MBeanInfo cannot be an OpenMBeanInfo.  The information about
  OpenTypes is still available through the "openType" field of the
  Descriptor for each MBeanParameterInfo etc.

  The specification does not require or forbid using an
  OpenMBeanParameterInfo etc when primitive types are not involved.

  Specified: javax.management.MXBean javadoc, section "MBeanInfo
  contents for an MXBean".

* For compatibility with the existing java.lang.management behaviour,
  a problem in translating from Open Types or Open Data into Java Types
  or Java Data is signaled with a java.io.InvalidObjectException.  Given
  the documented meaning of this exception, we continue to use the more
  appropriate exception OpenDataException for a problem in translating
  Java Types or Java Data to Open Types or Open Data.

  Specified: javax.management.MXBean javadoc, section "Exceptions".
###@###.### 2005-06-01 14:18:22 GMT

Further changes:

* As for @PropertyNames, items can be missing in the CompositeData from which we are reconstructing a Java class in the case where it comes from a no-arg constructor plus setters.  The setters for the missing items are not called.

* Specify that the MBeanInfo for an MXBean contains an MBeanNotificationInfo[] that is derived with NotificationBroadcaster.getNotificationInfo() at the time the MXBean is registered.  If the MXBean does not implement NotificationBroadcaster, then the array is empty.

* Specify that the MBeanInfo for an MXBean contains an MBeanConstructorInfo[] containing the publicly-visible constructors of the MXBean.  MXBean type mappings do not apply to constructor parameters.
###@###.### 2005-06-03 13:22:30 GMT

Comments
EVALUATION Required for Mustang. ###@###.### 2005-06-01 11:04:49 GMT
01-06-2005