2012-08-15 21 views
0

我正在使用Apache-cxf來實現Restful Web服務。如果發生異常,我使用ExceptionMapper構建響應對象。如果發生任何異常,我會收到錯誤。 「未找到響應類MyException的消息正文作者

」找不到響應類MyException的消息正文作者。「

我可以找到一些建議實現MessageBodyWriter的自定義Writer的帖子,但我不是很清楚爲什麼我需要自定義編寫器,如果爲構建響應傳遞的實體對象(ErrorInfo)是jaxb對象。這可能是一個非常愚蠢的問題,但只是想明白。

@Provider 
public class MyExceptionMapper implements 
    ExceptionMapper<MyException> { 

@Override 
public Response toResponse(MyException ex) { 
    Response.Status statusCode = exceptionMap.get(ex.getClass()); 
    ErrorInfo errorInfo=new ErrorInfo(); 
    errorInfo.setErrorCode(ex.getErrorCode()); 
    errorInfo.setErrorMessage(ex.getMessage()); 

    return Response.status(statusCode).entity(ex).build(); 
    } 
} 


@XmlRootElement(name = "errorInfo") 
@XmlType(propOrder = { "errorCode", "errorMessage"}) 
public class ErrorInfo { 
private String errorCode; 
private String errorMessage; 


public String getErrorCode() { 
    return errorCode; 
} 
public void setErrorCode(String errorCode) { 
    this.errorCode = errorCode; 
} 
public String getErrorMessage() { 
    return errorMessage; 
} 
public void setErrorMessage(String errorMessage) { 
    this.errorMessage = errorMessage; 
} 
} 

回答

7

有同樣的問題,我設置的內容類型明確地解決了這個問題:

return Response.status(statusCode).entity(ex).type(MediaType.APPLICATION_JSON).build(); 
相關問題