Jersey 2.6杰克逊提供者注册

Ase*_*ake 13 jersey jackson jersey-2.0

我正在使用Jersey 2.6实现REST Web服务,

我在注册Jackson提供程序以获得JSON支持时遇到了麻烦,我已经根据jeresy文档(https://jersey.java.net/documentation/2.6/user-guide.html#json.jackson)实现了.

  1. 添加maven依赖 - jersey-media-json-jackson
  2. 实现了ContextResolver类.
  3. 使用@Provider对其进行注释以启用"Auto-Discoverable Features"
  4. web.xml具有提供程序类的包名称,因此将在扫描期间注册提供程序.

参考:http: //blog.dejavu.sk/2013/11/19/registering-resources-and-providers-in-jersey-2/

由于某种原因杰克逊JSON提供商没有注册,我错过了什么?

Pau*_*tha 13

直到Jersey 2.9,该功能不会被自动发现.我们需要(1)JacksonFeatureApplication/ResourceConfig子类中显式注册,(2)列出要扫描的包的web.xml中的Jackson包,或者(3)将JacksonFeature添加到web.xml中的提供者列表中

应用子类:

public class MyApplication extends ResourceConfig {  
    public MyApplication() {
        // (1)
        register(JacksonFeature.class); // <----- Jackson Support
        packages("the.package.of.your.resources");
    }
}
Run Code Online (Sandbox Code Playgroud)

或web.xml:

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>
        org.glassfish.jersey.servlet.ServletContainer
    </servlet-class>
    <init-param>
        <!-- (2) -->
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>
            the.package.of.your.resources,
            org.codehaus.jackson.jaxrs <!-- Jackson providers -->
        </param-value>
    </init-param>
    <init-param>
        <!-- (3) -->
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>
            org.glassfish.jersey.jackson.JacksonFeature
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)

请参阅"第二期"中的更多详细信息.请注意,对于...classnames属性,如果要注册多个提供程序,则应将其列在以逗号,分号或换行符分隔的相同param-value中.

哦,只是一个FYI,ContextResolver只是ObjectMapper在可检索的上下文中注册,所以MessageBodyReader/MessageBodyWriters可以重用它.但它没有记录MessageBodyReader/Writer编组/解组所需的实际数据.

  • 您还可以查看服务器使用的Jackson版本.您可以尝试从服务器中删除工件.它可能是加载较旧的杰克逊版本.但我再次不确定,只是提出一些想法,你可以尝试,并寻找 (2认同)
  • 你被发现,有一个旧版本的杰克逊被添加到耳朵与其他一些依赖,它一旦被删除就起到魅力的作用. (2认同)