2013-01-11 11 views
9

Mam punkt końcowy Jax-rs wdrożony w archiwum WAR na JBoss 7.1.1. W odpowiedzi JSON nie chcę, aby moja nazwa pola null została uwzględniona, więc umieszczam na niej @JsonSerialize.Jackson @JsonSerialize zignorowany w Jboss 7.1.1, jeśli maven dependecy ustawiony na dostarczony

class MyResponse { 

    private Long id; 

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

    private List<String> addresses; 

    // getters and setters 
} 

My pom.xml ma następującą

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

Gdy scope dla resteasy-jackson-provider jest ustawiony na provided ignoruje adnotacji i zwraca null w odpowiedzi JSON. Jednak po usunięciu zależności scope from maven - działa.

Wygląda na to, że JBoss powinien automatycznie wczytać ten moduł, jeśli zostanie znalezione wdrożenie Jax-RS.

Teraz nie wiem, czy to jest błąd i czy powinienem naprawdę uwzględnić tę zależność (NIE zachowując tego provided). A może robię coś nie tak?

Odpowiedz

14

Należy utworzyć deskryptor struktury wdrażania JBoss.

Ponieważ jest to projekt Maven Przypuszczam, że byłoby pod src/main/webapp/WEB-INF/JBoss rozmieszczeniem-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> 

To pozwoli wbudowane wsparcie dla RESTEasy i Jackson działają poprawnie w JBoss 7.1.x lub JBoss EAP 6.x. Bez tego deskryptora RESTEasy użyje dostawcy Jettison.

+0

Wielkie dzięki, Mark, to zadziałało (JBoss EAP 6.3) dla mnie i mogę wznowić mój szczęśliwy odpoczynek kodowania :) –

Powiązane problemy