9

JBoss 7.1.1 の WAR アーカイブに Jax-rs エンドポイントをデプロイしました。nullその JSON 応答に、フィールド名を含めたくないので、付け@JsonSerializeました。

class MyResponse {

    private Long id;

    @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
    private String name;

    private List<String> addresses;

    // getters and setters
}

pom.xmlは次のものを持っています

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.3.2.Final</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.3.2.Final</version>
        <scope>provided</scope>
    </dependency>

scopeforresteasy-jackson-providerが設定されている場合provided、アノテーションは無視さnullれ、JSON 応答で返されます。ただし、scopemaven 依存関係から削除すると、機能します。

ここのページからhttps://docs.jboss.org/author/display/AS71/Implicit+module+dependencies+for+deployments Jax-RS デプロイメントが見つかった場合、JBoss はこのモジュールを自動ロードする必要があるようです。

これがバグなのか、この依存関係を本当に含める必要があるのか​​ どうかはわかりません(保持しないでくださいprovided)。それとも、私はそこで何か間違ったことをしていますか?

4

1 に答える 1

15

JBoss Deployment Structure 記述子を必ず作成する必要があります。

これは Maven プロジェクトなので、src/main/webapp/WEB-INF/jboss-deployment-structure.xml の下にあると思います

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
    <dependencies>
      <module name="org.codehaus.jackson.jackson-core-asl" />
      <module name="org.codehaus.jackson.jackson-mapper-asl" />
    </dependencies>
  </deployment>
</jboss-deployment-structure>

これにより、JBoss 7.1.x または JBoss EAP 6.x で RESTEasy および Jackson の組み込みサポートが正しく機能するようになります。この記述子がない場合、RESTEasy は Jettison プロバイダーを使用します。

于 2013-02-26T09:18:13.433 に答える