0

这是 JMX bean 调用(失败):

import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.ws.rs.core.Response;
MBeanServerConnection mbeanConn

//some code going on ...    
...

response = (Response) mbeanConn.invoke(myBean,"example", null, null);

它抛出异常:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.cxf.jaxrs.impl.ResponseIm

在查看我的代码时,调用的函数是:

  import javax.ws.rs.core.Response;

   @ManagedOperation
   public Response example() throws GeneralException {
    //do some things with the response object
    ...
    return response.build();
   }

据我了解,我有一个抽象类 javax.ws.rs.core.Response 没有序列化的问题。

任何想法如何绕过这个问题?

4

1 回答 1

1

JMX 使用 java 序列化来传输参数和操作结果。即使该类是Serializable您在客户端的类路径中需要它。

除了添加一个将对象呈现为字符串的操作之外,没有其他解决方案。如果幸运的话,你可以使用toString(),但如果对象没有被覆盖Object.toString(),你就必须自己动手。

于 2013-08-22T12:23:45.410 回答