jmx-dev 8038343: Eliminate use of reflection to access JavaBeans Introspector

Mandy Chung mandy.chung at oracle.com
Tue Mar 25 20:15:15 UTC 2014


On 3/25/2014 12:04 PM, Alan Bateman wrote:
>
> Currently the introspection code in the JMX monitor API uses core 
> reflection to access the JavaBeans Introspector. This came about when 
> we had to eliminate this dependency - for example in the subset 
> Profiles of Java SE then compact3 defines the JMX API but doesn't have 
> java.beans.
>
> I'd like to clean this up further and replace the reflection hack with 
> a solution that uses the SharedSecrets mechanism. The reason is to 
> avoid needing to suppress the access check when we move to modules in 
> the future. The webrev with the proposed changes is here:
>
> http://cr.openjdk.java.net/~alanb/8038343/webrev/
>
> The changes are very simple and the only non-obvious thing is that the 
> JMX introspector needs to ensure that the beans Introspector is 
> initialized so this is the reason for the Class.forName. I've tried a 
> number of other approaches to this but this one seems to simplest.

This looks good.   Using the SharedSecrets mechanism is a better 
solution.   I generally prefer to use the 3-arg Class.forName to 
explicitly pass the class loader but it's really minor.

Mandy


More information about the jmx-dev mailing list