2013-01-11 9 views
9

JBoss 7.1.1のWARアーカイブにJax-rsエンドポイントがデプロイされています。 JSONレスポンスでは、nullフィールド名を含めることは望ましくないので、@JsonSerializeを付けてください。JBoss 7.1.1でmaven dependecyが指定されている場合、@JsonSerializeが無視される

class MyResponse { 

    private Long id; 

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

    private List<String> addresses; 

    // getters and setters 
} 

resteasy-jackson-providerためscopeprovidedに設定されているときに私の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> 

それは注釈を無視し、JSON応答でnullを返しました。しかし、私がscopeをmaven依存関係から削除すると、動作します。

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

これはバグかどうか、この依存関係を本当に含めるべきかどうかは分かりません(providedを保持しない)。あるいは私はそこに何か間違っているのでしょうか?

答えて

14

JBossデプロイメント構造記述子を作成する必要があります。

これは私はそれがこれはビルトインのRESTEasyをサポートできるようになりますのsrc /メイン/ webappの/ WEB-INF /のjboss-展開する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> 

下だろうと仮定しMavenプロジェクトであるので、ジャクソンがJBoss 7.1.xまたはJBoss EAP 6.xで正しく動作するようにします。この記述子がなければ、RESTEasyはJettisonプロバイダーを使用します。

+0

ありがとうMark、これは私のために働いています(JBoss EAP 6.3)、私は幸せな残りのコーディングを再開できます:) –

関連する問題