1

私の Wildfly 8.1 インストールでは、クラスを JSON にマーシャリングするために Jackson (Jackson 2 ではなく) を使用しているという興味深い問題があります。クラスで使用している JAXB アノテーションを利用するために、Jettison を使用したいと考えています。

サーバーが Jackson の代わりに Jettison を使用するように強制するために、次の手順を実行しました。

  1. POM.xml の依存関係を変更して、resteasy-jettison-providerモジュールに依存するように、スコープを提供どおりに設定しました

    < 依存関係 >
    < groupId >org.jboss.resteasy</ groupId >
    < artifactId >resteasy-jettison-provider</ artifactId > < バージョン >3.0.8.Final</ バージョン >
    < スコープ >提供</ スコープ >
    </ 依存関係>

  2. WEB-INF ディレクトリのjboss-deployment-structure.xmlを変更して、jettison モジュールを含め、すべての jackson モジュールを除外しました。

    < jboss-deployment-structure >
    < deployment >
    < 除外 >
    < module name="org.jboss.resteasy.resteasy-jackson-provider" />
    < module name="com.fasterxml.jackson.core.jackson-core" / >
    < モジュール名="com.fasterxml.jackson.core.jackson-annotations" />
    < モジュール名="com.fasterxml.jackson.core.jackson-databind" />
    < モジュール名="com.fasterxml.jackson. jaxrs.jackson-jaxrs-json-provider" />
    < モジュール名="org.jboss.resteasy.resteasy-jackson2-provider" />
    </ 除外 >
    < 依存関係 >
    < モジュール名="org.jboss.resteasy.resteasy-jettison-provider" />
    </ 依存関係 >
    </ 展開 >
    </ jboss-展開構造 >

サーバーを起動したら、簡単な JSON を送信してアプリケーションにログインします。

{ 
    "authRequest":   
    { 
      "appLogin":"restful",
      "appPassword":"mypassword" 
    }
}

ただし、このコード スニペットを送信すると、サーバーから次の例外が発生します。

    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 認識されないフィールド「authRequest」(クラス com.myapp.AppAuthRequest)、無視可能としてマークされていません

その例外から、私の設定にもかかわらず、ジャクソンがまだ使用されているようです。

私が間違っていることや、どのような設定ミスがあるかを誰かが指摘できますか?

4

0 に答える 0