我面临以下问题:
我将 CXF 用于 REST 服务。对于我正在使用的异常处理javax.ws.rs.ext.ExceptionMapper
,public Response toResponse(T ex)
我想返回一些对象,例如
class MyObject {
String detail;
}
方法的示例实现类似于
public Response toResponse(T ex) {
MyObject o = new MyObject();
o.detail = "...";
return Response.status(400).entity(o).build();
}
但我有问题
org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage
WARNING: No message body writer has been found for response class RequestError.
不知何故,我发现当我指定 MediaType
return Response.status(400).entity(o).type("application/json").build();
一切正常,但我不知道客户端接受哪种类型...
当然,我可以在某个地方存储客户端接受的类型,然后使用正确的类型,但这有异味。我想用更好的东西。
例如,在我的 CXF 端点中,我可以使用 指定@Produces
我的控制器方法生成的 MediaType 类型,然后 CXF/Spring 选择正确的。我也在我的 ExceptionMapper 中尝试过,但它不起作用。