我使用Jersey和Jackson来实现我的服务器提供的RESTful服务。数据在客户端和服务器之间作为JSON文档进行交换。杰克逊在JSON文档和POJO之间进行映射。这很好用。
但我遇到了一个问题。使用格式错误的JSON文档调用服务时,服务器返回500错误。我期待400 BAD-Request错误。在Jersey文档中进行的一些搜索向我展示了ExceptionMappers可用于归档此行为。我还发现Jackson已经有一个JsonParseExceptionMapper的实现,但它永远不会被调用。
我是否必须注册映射器,如果是,我该如何在源代码之外执行此操作。?
答案 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>