2013-08-22 2 views
0

이는 JMX 빈 호출 (즉, 실패)가된다자바 JMX 호출 방법은 작동하지 않는 객체 (가지는 NotSerializableException 수)

:

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(); 
    } 

나는 문제의 t가 javax.ws.rs.core.Response 추상 클래스가 직렬화되어 있지 않다.

이 아이디어를 무시하는 방법에 대한 아이디어가 있으십니까?

답변

1

JMX는 인수와 연산 결과를 전송하기 위해 java serialization을 사용합니다. 클래스가 Serializable 인 경우에도 클라이언트의 클래스 경로에 필요합니다.

개체를 말하자면 String으로 렌더링하는 작업을 추가하는 것 외에는 해결책이 없습니다. 운이 좋으면 toString()을 사용할 수 있지만 오브젝트가 Object.toString()을 덮어 쓰지 않은 경우 직접 롤업해야합니다.

+0

결국 Ive는 Serializable을 구현하는 응답을 작성했습니다. 감사합니다. – Nimrod007

관련 문제