jmx-dev RFR: 8010285 Enforce the requirement of Management Interfaces being public

shanliang shanliang.jiang at oracle.com
Wed May 29 04:18:50 PDT 2013


Jaroslav,

Introspector.java
---------------------
Line 496 - 515
It is good to do check:
    (Modifier.isPublic(c.getModifiers()) || 
MBeanAnalyzer.ALLOW_NONPUBLIC_MBEAN)
but it is not necessary if an interface is not equal to clMBeanName.

is it possible to simplify the method as:
     private static <T> Class<? super T> implementsMBean(Class<T> c, 
String clName) {
        Class<T> ret = null;

        try {
            Class clMBeanClass = Class.forName(clName + "MBean");
            List list = Arrays.asList(c.getInterfaces());
           
            if (list.contains(clMBeanClass)
                    && (Modifier.isPublic(clMBeanClass.getModifiers()) 
|| MBeanAnalyzer.ALLOW_NONPUBLIC_MBEAN)) {
                ret = clMBeanClass;
            }
        } catch (ClassNotFoundException cne) {
            // clMBeanClass does not exist?
        }

        return ret;
    }

Is there any special reason to not have a unit test?

Shanliang


Jaroslav Bachorik wrote:
> And the webrev would come handy, of course.
>
> http://cr.openjdk.java.net/~jbachorik/8010285/webrev.00/
>
> -JB-
>
> On 05/28/2013 04:22 PM, Jaroslav Bachorik wrote:
>   
>> The fix enforces the management interfaces (read MBean and MXBean
>> interfaces) being public. While this is defined in the specification it
>> was not enforced in any way and it was allowed to create MBeans for eg.
>> private MBean interfaces.
>>
>> The fix adds checks when creating and registering MBeans and throws
>> javax.management.NotCompliantMBeanException when a user tries to create
>> an MBean with non-public management interface.
>>
>> Since this change can cause problems for users having non-public
>> management interfaces a system property is introduced that will revert
>> to the old behaviour when set (com.sun.jmx.mbeans.allowNonPublic).
>>
>> Thanks,
>>
>> -JB-
>>
>>     
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/jmx-dev/attachments/20130529/17c0f066/attachment.html 


More information about the jmx-dev mailing list