> 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