1

Jersey と Jackson を使用して、サーバーが提供する RESTful サービスを実装しています。データはクライアントとサーバーの間で JSON ドキュメントとして交換されます。Jackson は、JSON ドキュメントと POJO の間のマッピングを行います。これはうまくいきます。

しかし、私は1つの問題に遭遇しました。不正な形式の JSON ドキュメントを使用してサービスを呼び出すと、サーバーは 500 エラーを返します。代わりに 400 BAD-Request エラーが発生することが予想されます。Jersey のドキュメントを検索したところ、ExceptionMappers を使用してこの動作をアーカイブできることがわかりました。また、Jackson には JsonParseExceptionMapper の実装が既にあることもわかりましたが、呼び出されることはありません。

マッパーを登録する必要がありますか? もしそうなら、ソース コードの外でこれを行うにはどうすればよいですか?

4

1 に答える 1

2

OK、マッパークラスを登録する方法を見つけました。

Jersery ServletContainer が登録されている web.xml では、パッケージ名org.codehaus.jackson.jaxrsの横にJackson パッケージ名を渡す必要があります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>
于 2012-08-07T09:56:11.320 に答える