daskai0815
daskai0815

Reputation: 177

How to easily use Jackson for Jersey

I want to use Jersey for implemnting some Java REST services. The default POJO converter JAXB handles JSON objects a bit strange, so I want to use Jackson for converting POJOs with little or less overhead. How would do I tell the J2ME framework to use another converter?

My web.xml looks like this:

<!-- Jersey JAVA REST implementation -->
<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>org.foobar.rest.services</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

Upvotes: 13

Views: 25325

Answers (2)

StaxMan
StaxMan

Reputation: 116620

In addition to registering Jackson 1.x provider, you can alternatively use Jackson 2.x JSON provider (with Jackson 2.x databind and core module it depends on): https://github.com/FasterXML/jackson-jaxrs-json-provider It auto-registers itself with service provider interface (1.x did not since it was feared users might be surprised by this, since it's based on existence of a jar in classpath instead of explicit choice).

EDIT (Sep 2013): As pointed out by @koppor, this module is being deprecated, and replacement ones (JSON, XML, Smile) can be found from https://github.com/FasterXML/jackson-jaxrs-providers (thanks!)

Upvotes: 5

mschmoock
mschmoock

Reputation: 20884

simply add the jackson JARs and modify the web.xml like this:

<!-- Jersey JAVA REST implementation -->
<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>org.foobar.rest.services;org.codehaus.jackson.jaxrs</param-value>    <!--  use jackson for JSON -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

The required Jackson JARs ( http://jackson.codehaus.org/ ) are:

jackson-core-asl-1.9.10.jar
jackson-core-lgpl-1.9.10.jar
jackson-jaxrs-1.9.10.jar
jackson-mapper-asl-1.9.10.jar
jackson-mapper-lgpl-1.9.10.jar
jackson-mrbean-1.9.10.jar
jackson-smile-1.9.10.jar
jackson-xc-1.9.10.jar

Upvotes: 17

Related Questions