泽西没有调用JsonParseExceptionMapper

时间:2012-08-07 09:22:21

标签: java json jersey jackson

我使用Jersey和Jackson来实现我的服务器提供的RESTful服务。数据在客户端和服务器之间作为JSON文档进行交换。杰克逊在JSON文档和POJO之间进行映射。这很好用。

但我遇到了一个问题。使用格式错误的JSON文档调用服务时,服务器返回500错误。我期待400 BAD-Request错误。在Jersey文档中进行的一些搜索向我展示了ExceptionMappers可用于归档此行为。我还发现Jackson已经有一个JsonParseExceptionMapper的实现,但它永远不会被调用。

我是否必须注册映射器,如果是,我该如何在源代码之外执行此操作。?

1 个答案:

答案 0 :(得分:2)

好的,我发现了如何注册映射器类。

在您注册Jersery ServletContainer的web.xml中,您必须在包名旁边传递Jackson包名org.codehaus.jackson.jaxrs,例如com.example.myapp.api;。然后服务器在启动时扫描这些包并注册它找到的监听器。

<servlet>
        <servlet-name>Jersey</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.example.myapp.api;org.codehaus.jackson.jaxrs</param-value>
        </init-param>
</servlet>