Restful Web サービスを実装するために Apache-cxf を使用しています。例外が発生した場合に備えて、ExceptionMapper を使用して応答オブジェクトを作成しています。例外が発生すると、エラーが発生します。
「応答クラス 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;
}
}