1
使用Java Attach API连接到IBM J9VM的正确方法是什么?使用Attach API连接到J9VM
我想以下(与具有JDK在我的类路径中的tools.jar):
private static final J9AttachProvider ATTACH_PROVIDER = new J9AttachProvider();
...snip...
String pid = getPIDofRunningVM();
Constructor<J9VirtualMachine> constructor = J9VirtualMachine.class.getConstructor(new Class[]{AttachProvider.class, String.class
});
constructor.setAccessible(true);
J9VirtualMachine virtualMachine = constructor.newInstance(new Object[]{ATTACH_PROVIDER, pid});
我也试过这样做,而无需使用反射,但我不断收到
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:44)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:516)
at de.test.Test.gogo(Test.java:34)
at de.teset.Test.main(Test.java:26)
Caused by: java.lang.IllegalAccessError
at ibm.tools.attach.J9VirtualMachine.<init>(J9VirtualMachine.java:24)
... 6 more
有没有人知道这样做的正确方法是什么?
的“// IBM”部分逃脱到代码的bug夫妇的: 1.插装IBM VM之前,必须测试剂的存在: (插入地址= vm.getSystemProperties()。getProperty( CONNECTOR_ADDRESS));如果(空==连接器地址) } 2.当不再需要mbean时,必须关闭从JMXConnectorFactory检索到的连接器(JMXConnector连接器...)。所以在这种情况下,连接器应该是该类中的成员,以便稍后启用connector.close()。 – 2012-11-22 17:28:56