RFR: JDK-8185003 JMX: Add a version of ThreadMXBean.dumpAllThreads with a maxDepth argument

Daniel Fuchs daniel.fuchs at oracle.com
Thu Aug 3 21:10:38 UTC 2017


Hi Mandy,

On 03/08/17 21:04, Mandy Chung wrote:
>> Adding a public method to an interface is an incompatible source 
>> change unless there is a default body. On the other hand I am not sure 
>> how MXBean proxies will work when proxying an interface containing a 
>> default body. It would be interesting to check this.
>>
> 
> ThreadMXBean is a platform MXBean and so JDK implementation is the one 
> implementing it.  The real question here is that when 
> MBeanServerConnection.invoke is called on this new method that does not 
> exist in the remote MBeanServer (running on JDK 9 for example), does it 
> get javax.management.ReflectionException?  Or something else?

I believe that will be a ReflectionException:
http://download.java.net/java/jdk9/docs/api/javax/management/MBeanServerConnection.html#invoke-javax.management.ObjectName-java.lang.String-java.lang.Object:A-java.lang.String:A-

> Similarly, when the client gets a proxy of ThreadMXBean from a remote 
> MBeanServer running on JDK 9 VM, and it calls this method, what 
> exception does it get?  We may need to update the spec to indicate this 
> error cases if it’s not clear.  The notes in 
> ManagementFactory.newPlatformMXBeanProxy covers some cases due to the 
> difference in the client/server are running on.

AFAIK that should be handled by the proxy code - I'd expect that you
will get an UndeclaredThrowableException wrapping the ReflectionException.
http://hg.openjdk.java.net/jdk9/dev/jdk/file/65464a307408/src/java.management/share/classes/javax/management/MBeanServerInvocationHandler.java#l308

> 



More information about the serviceability-dev mailing list