> On Aug 3, 2017, at 2:10 PM, Daniel Fuchs <daniel.fu...@oracle.com> wrote:
> 
> 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

Thanks.  We should add tests for that.

Mandy

Reply via email to