在Jersey 2.10.4中注册ExceptionMapper

时间:2014-10-16 00:09:02

标签: java java-ee java-8 jersey-2.0 grizzly

默认情况下,泽西岛被打破。它既不在返回的HTML中也不在日志文件中显示异常。由于部署限制,我不能使用Jersey资源的XML注册机制,而是以编程方式进行。以下内容无效:

@Provider
public class ExceptionDump implements ExceptionMapper<WebApplicationException> {
    @Override
    public Response toResponse(WebApplicationException ex) {
        String trace = Exceptions.getStackTraceAsString(ex);
        return Response.status(500).entity(trace).type("text/plain").build();
    }
}

public class App extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> cls = new HashSet<Class<?>>(super.getClasses());
        cls.add(ExceptionDump.class);
        return cls;
    }
    ...
}

Grizzly容器加载并运行,但异常映射器被忽略,Grizzly仍然只显示&#34;请求失败。&#34;关于错误。

1 个答案:

答案 0 :(得分:0)

通过使用比WebApplicationException更高的(更高)类来修复此问题,例如Throwable。简单来说,有些异常会从WebApplicationException继承,因此网络上的大多数示例显示WebApplicationException都是错误的,而不会发出许多内部错误的警告除非使用更一般的父母,否则不予报告。