【问题标题】:Java JMX invoking method returning javax.ws.rs.core.Response object not working (get NotSerializableException)Java JMX 调用方法返回 javax.ws.rs.core.Response 对象不起作用(获取 NotSerializableException)
【发布时间】:2013-08-22 11:10:21
【问题描述】:

这是 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 没有序列化的问题。

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

【问题讨论】:

    标签: java spring serialization jmx spring-jmx


    【解决方案1】:

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

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

    【讨论】:

    • 最后我构建了一个实现Serializable的响应,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多