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 に答える