RFR 8129215: com.sun.jmx.mbeanserver.Introspector may provide results inconsistent with the JavaBeans Introspector
daniel.fuchs at oracle.com
Thu Jun 18 22:02:25 UTC 2015
On 6/18/15 7:16 PM, Jaroslav Bachorik wrote:
> On 18.6.2015 18:47, Daniel Fuchs wrote:
>> Hi Jaroslav,
>> I haven't looked at the code, but if I understand well,
>> that would be a spec change.
>> Attribute names are case sensitive in JMX.
>> getFoo() => attribute named "Foo"
>> getfoo() => attribute named "foo"
>> Are you proposing to change that?
> In this case it is an even bigger mess. This would work as long as you
> don't go through the JavaBeans introspector. The property descriptor
> generated for the "getFoo" method will be named "foo" and it is
> indistinguishable from "getfoo". Therefore, when you are trying to
> reach this attribute as "Foo" the JavaBeans introspector will not
> resolve the getter name. The SimpleIntrospector, on the other hand, will.
> I am proposing to change the SimpleIntrospector so it behaves exactly
> as the JavaBeans introspector. But it seems that even that might be
> considered a specification change :/
In the JMX 1.4 specification - section 184.108.40.206:
220.127.116.11 Case Sensitivity
All attribute and operation names derived from these design patterns are
sensitive. For example, this means that the methods 'getstate' and
define two attributes, one called 'state' that is read-only, and one called
'State' that is write-only.
While case sensitivity applies directly to component names of standard
MBeans, it is
also applicable to all component names of all types of MBeans, standard
In general, all names of classes, attributes, operations, methods, and
elements defined in the JMX specification are case sensitive, whether
they appear as
data or as functional code when they are manipulated by management
>> best regards,
>> -- daniel
>> On 18/06/15 18:39, Jaroslav Bachorik wrote:
>>> Please, review the following change
>>> Issue : https://bugs.openjdk.java.net/browse/JDK-8129215
>>> Webrev: http://cr.openjdk.java.net/~jbachorik/8129215/webrev.00
>>> The JMX Introspector will try to use the JavaBeans introspector
>>> possible, delegating the requests for the property getter/setter
>>> methods. However, when the JavaBeans introspector is not available
>>> (modules) the JMX Introspector falls back to its own simple, reflection
>>> based, algorithm.
>>> The simple algorithm does not enforce the rule of property names
>>> starting with a lower-case letter. This might lead to situations when
>>> the simple introspector provides the getter method for an attribute the
>>> JavaBeans introspector would not (eg. 'Attribute' attribute)
>>> This patch changes the simple introspector behaviour to conform to the
>>> one of the JavaBeans introspector. Also, it makes the simple
>>> introspector called only when the JavaBeans introspector is not
>>> available - and not when the JavaBeans introspector fails to resolve a
>>> property getter.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the serviceability-dev