我有一个JAX-RS资源方法。
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<Some> list() {
final List<Some> list = get();
// list and each elements are ok.
return list;
}
问题是application/xml
生成500而没有任何特定服务器(tomcat)日志。
application/json
效果很好。
我检查了list
中每个元素的JAXB-marshaller。
我该如何调试?如何测试MessageBodyWriter
的任何List<Some>
?
更新
此问题的根本原因(没有错误日志的500)是一个错误的JAXB注释类。
我创建了ExceptionMapper<Exception>
作为@peeskillet建议。
@Provider
public class MyExceptionMapper implements ExceptionMapper<Exception> {
@Override
public Response toResponse(final Exception exception) {
exception.printStackTrace(System.err);
return Response.serverError().build();
}
}
然后我可以看到JAXB犯了什么错误。我仍然不明白为什么没有报告任何JAXB错误。
答案 0 :(得分:1)
“我该如何调试?”
有时,如果没有记录错误/异常,我会创建一个
ExceptionMapper<Throwable or Exception>
然后打印堆栈跟踪。如果在JAX-RS上下文中抛出异常,它应该通过映射器。