RFR: 8332303: Better JMX interoperability with older JDKs, after removing Subject Delegation

Kevin Walls kevinw at openjdk.org
Wed May 15 20:29:05 UTC 2024


On Wed, 15 May 2024 19:09:54 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

> I'm just trying to understand current and previous behavior of jconsole a bit better.....

Right, to be clear it's not JConsole's fault.   The early part of JConsole's stack is:


...connection....
	at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl_Stub.addNotificationListeners(RMIConnectionImpl_Stub.java:136)
	at java.management.rmi/javax.management.remote.rmi.RMIConnector.addListenersWithSubjects(RMIConnector.java:595)
	at java.management.rmi/javax.management.remote.rmi.RMIConnector.addListenerWithSubject(RMIConnector.java:571)
	at java.management.rmi/javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.addNotificationListener(RMIConnector.java:1238)
	at jdk.jconsole/sun.tools.jconsole.MBeansTab$1.doInBackground(MBeansTab.java:93)
...older frames...


...and when it is running with an older JDK, RMIConnector.addListenerWithSubject() would create a new array of Subjects, containing what it was given (which is null).
It passes on the array, and then is going to get the UnsupportedOperationException.
i.e. Older client code passing a null Subject, actually "promotes" it to an array and hits the Exception, although it really is not trying to use the removed feature.

This problem is specifically with addListenerWithSubject.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/19253#issuecomment-2113397029


More information about the serviceability-dev mailing list