13

いくつかのJavaRESTサービスを実装するためにJerseyを使用したいと思います。デフォルトのPOJOコンバーターJAXBはJSONオブジェクトを少し奇妙に処理するので、オーバーヘッドをほとんどまたは少なくしてPOJOを変換するためにJacksonを使用したいと思います。J2MEフレームワークに別のコンバーターを使用するように指示するにはどうすればよいですか?

私のweb.xmlは次のようになります。

<!-- 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>
4

2 に答える 2

17

ジャクソンJARを追加し、次のようにweb.xmlを変更するだけです。

<!-- 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>

必要なJacksonJAR(http://jackson.codehaus.org/)は次のとおりです。

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
于 2012-10-14T14:46:06.660 に答える
5

Jackson 1.xプロバイダーの登録に加えて、Jackson 2.x JSONプロバイダーを使用することもできます(Jackson 2.xデータバインドとそれに依存するコアモジュールを使用):https ://github.com/FasterXML/jackson-jaxrs-json -provider サービスプロバイダーインターフェイスに自動登録します(1.xは、明示的な選択ではなくクラスパス内のjarの存在に基づいているため、ユーザーがこれに驚かれる恐れがあるため、登録しませんでした)。

編集(2013年9月):@ kopporが指摘しているように、このモジュールは非推奨になり、代替モジュール(JSON、XML、Smile)はhttps://github.com/FasterXML/jackson-jaxrs-providersから見つけることができます(ありがとう!)

于 2012-10-15T03:31:20.890 に答える