如何抑制泽西自动抛出的泽西例外?

时间:2013-09-11 07:03:59

标签: java rest jersey jersey-client jersey-1.0

我在JAVA中使用Jersey 1.14 for REST。如果资源的POST正文中有任何错误,Jersey会抛出异常,并将我的内部类提到客户端。 我继续希望在从我的应用程序传递错误时给出错误,但是抑制Jersey抛出的错误(对于甚至没有到达我的应用程序的请求,因为Jersey识别异常并抛出它)。 我搜索了任何标志来实现这一点,但找不到任何东西。有没有办法做到这一点?

编辑: 重新提出问题:静音/禁止错误堆栈跟踪,以便在球衣中输入无效

更新: 我尝试使用ExceptionMapper,捕获java.lang.Exception。它会在内容类型丢失时捕获,但在对象转换中出现错误时无法捕获异常。

4 个答案:

答案 0 :(得分:2)

您可以使用 ExceptionMapper 。这是关于它的an old article

答案 1 :(得分:0)

Jersey会抛出代码中未处理的异常。因此,您需要将您的Web服务代码包装在try/catch中。并捕获Exception类以确保您在Web服务类中正常处理它。

答案 2 :(得分:0)

我相信这可以通过 server 配置来实现,因为Jersey似乎没有任何相关的configuration option

您使用的是哪个servlet容器?


(编辑)用于Tomcat搜索“tomcat抑制异常堆栈跟踪”。大多数答案都会让您在error-page中放置web.xml元素:

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/your-custom-error-page.jsp</location>
</error-page>

当然,实现一个不包含堆栈跟踪的your-custom-error-page.jsp。它还可以检查应用程序环境并仅在开发中显示堆栈跟踪。

答案 3 :(得分:0)

如果要解析xml,可以编写自定义ContextResolver来捕获异常。我的json案例你可能需要一个messagebodyreader / writer