我一直在玩一个可编程的远程 JMX 客户端,它连接到 WebSphere Application Server 的 MBean 服务器。到目前为止一切顺利,我可以使用适当的 JMXServiceURL 进行连接并订阅来自我的 bean 的通知。
但是 - 如果一个 bean 发送一个通知,其中包含一个不在我的本地类路径上的类,它会以一个很好的堆栈跟踪爆炸:
SEVERE: Failed to fetch notification, stopping thread. Error is: java.rmi.RemoteException: CORBA NO_IMPLEMENT 1330646337 No; nested exception is:
org.omg.CORBA.NO_IMPLEMENT: The sender's class RMI:com.mycompany.MyWeirdClass:143EC4C84209B825:EAD08F0965BC6044 is not present on the local classpath, and the class is not marked as truncatable, so it cannot be unmarshaled. vmcid: OMG minor code: 1 completed: No
java.rmi.RemoteException: CORBA NO_IMPLEMENT
... more frames ...
这最终是由以下原因引起的:
Caused by: java.lang.ClassNotFoundException: com.mycompany.MyWeirdClass
at com.ibm.rmi.util.RepositoryId.loadClass(RepositoryId.java:675)
at com.ibm.rmi.util.RepositoryId.checkClassCache(RepositoryId.java:644)
...
看起来它在 IBM 的代码深处爆炸了,而且似乎没有任何地方我可以做任何事情;有问题的通知永远不会到达我的 NotificationListener。
所以; 在不阻止我收到进一步通知的情况下,我能做些什么来处理这种情况?