JDK-6714318 : Add JMX Connection fails if the target MBeanServer is not the platform MBeanServer
  • Type: Bug
  • Component: tools
  • Sub-Component: visualvm
  • Affected Version: 6u7
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-06-13
  • Updated: 2010-12-14
  • Resolved: 2010-11-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6u18 b06Fixed
Related Reports
Relates :  
Description
I have a JMX application which creates a private MBeanServer and export it
using an RMI Connector Server.

If I try to connect jvisualvm to that application using 
"Add JMX Connection", the little red icon in the bottom right corner starts blinking 
and the exception below appears in the log. The connection fails to open and
there's no way I can see my MBeans.

javax.management.InstanceNotFoundException: java.lang:type=Runtime
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1130)
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isInstanceOf(DefaultMBeanServerInterceptor.java:1438)
	at com.sun.jmx.interceptor.MBeanServerDispatcher.isInstanceOf(MBeanServerDispatcher.java:373)
	at com.sun.jmx.interceptor.MBeanServerDispatcher.isInstanceOf(MBeanServerDispatcher.java:373)
	at com.sun.jmx.mbeanserver.JmxMBeanServer.isInstanceOf(JmxMBeanServer.java:1087)
	at javax.management.remote.IdentityMBeanServerForwarder.isInstanceOf(IdentityMBeanServerForwarder.java:154)
	at com.sun.jmx.interceptor.SingleMBeanForwarder.isInstanceOf(SingleMBeanForwarder.java:268)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at javax.management.ClientContext$ContextInvocationHandler.invoke(ClientContext.java:635)
	at javax.management.ClientContext$ContextInvocationHandler.invoke(ClientContext.java:581)
	at $Proxy1.isInstanceOf(Unknown Source)
	at javax.management.remote.IdentityMBeanServerForwarder.isInstanceOf(IdentityMBeanServerForwarder.java:154)
	at com.sun.jmx.interceptor.SingleMBeanForwarder.isInstanceOf(SingleMBeanForwarder.java:268)
	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1751)
	at javax.management.remote.rmi.RMIConnectionImpl.access$1000(RMIConnectionImpl.java:99)
	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1590)
	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1678)
	at javax.management.remote.rmi.RMIConnectionImpl.isInstanceOf(RMIConnectionImpl.java:916)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
	at sun.rmi.transport.Transport$1.run(Transport.java:159)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
	at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
	at javax.management.remote.rmi.RMIConnectionImpl_Stub.isInstanceOf(Unknown Source)
	at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.isInstanceOf(RMIConnector.java:1058)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.tools.visualvm.jmx.JmxModelImpl$CheckerInvocationHandler.invoke(JmxModelImpl.java:801)
	at $Proxy9.isInstanceOf(Unknown Source)
	at java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:616)
Caused: java.lang.IllegalArgumentException: java.lang:type=Runtime not found in the connection.
	at java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:629)
	at com.sun.tools.visualvm.tools.jmx.JvmMXBeansFactory$JvmMXBeansImpl.getMXBean(JvmMXBeansFactory.java:382)
	at com.sun.tools.visualvm.tools.jmx.JvmMXBeansFactory$JvmMXBeansImpl.getRuntimeMXBean(JvmMXBeansFactory.java:355)
	at com.sun.tools.visualvm.jmx.application.JmxApplication.getPid(JmxApplication.java:103)
	at com.sun.tools.visualvm.jvmstat.JvmstatModelProvider.getMonitoredVm(JvmstatModelProvider.java:48)
	at com.sun.tools.visualvm.jvmstat.JvmstatModelProvider.createModelFor(JvmstatModelProvider.java:69)
	at com.sun.tools.visualvm.jvmstat.JvmstatModelProvider.createModelFor(JvmstatModelProvider.java:44)
	at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:96)
	at com.sun.tools.visualvm.tools.jvmstat.JvmstatModelFactory.getJvmstatFor(JvmstatModelFactory.java:50)
	at com.sun.tools.visualvm.jvm.JRockitJvmProvider.createModelFor(JRockitJvmProvider.java:46)
	at com.sun.tools.visualvm.jvm.JRockitJvmProvider.createModelFor(JRockitJvmProvider.java:42)
	at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:96)
	at com.sun.tools.visualvm.application.jvm.JvmFactory.getJVMFor(JvmFactory.java:65)
	at com.sun.tools.visualvm.jmx.application.JmxApplicationProvider.addJmxApplication(JmxApplicationProvider.java:305)
	at com.sun.tools.visualvm.jmx.application.JmxApplicationProvider.createJmxApplication(JmxApplicationProvider.java:205)
	at com.sun.tools.visualvm.jmx.application.AddJMXConnectionAction$1.run(AddJMXConnectionAction.java:78)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)

Comments
SUGGESTED FIX This issue was fixed by integration of VisualVM 1.2 into JDK 6u18.
22-11-2010

EVALUATION This use-case should not throw an exception.
22-11-2010