如何为List <some>?</some>测试MessageBodyWriter

时间:2015-01-26 13:30:50

标签: jaxb jax-rs

我有一个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错误。

1 个答案:

答案 0 :(得分:1)

  

“我该如何调试?”

有时,如果没有记录错误/异常,我会创建一个

ExceptionMapper<Throwable or Exception> 

然后打印堆栈跟踪。如果在JAX-RS上下文中抛出异常,它应该通过映射器。