2013-01-11 12 views
9

Ho un endpoint Jax-rs distribuito nell'archivio WAR su JBoss 7.1.1. Nella sua risposta JSON non voglio che il mio nome di campo null sia incluso, quindi metto @JsonSerialize su di esso.Jackson @JsonSerialize ignorato in Jboss 7.1.1 se maven dependecy è impostato su fornito

class MyResponse { 

    private Long id; 

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

    private List<String> addresses; 

    // getters and setters 
} 

mio pom.xml ha il seguente

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

Quando il scope per resteasy-jackson-provider è impostato su provided ignora l'annotazione e restituisce null in risposta JSON. Tuttavia quando rimuovo il scope dalla dipendenza di maven - funziona.

Dalla pagina qui https://docs.jboss.org/author/display/AS71/Implicit+module+dependencies+for+deployments sembra che JBoss debba caricare automaticamente questo modulo se è stata rilevata la distribuzione Jax-RS.

Ora non so se questo è un bug e se dovrei includere questa dipendenza (NON tenerlo provided). O forse sto facendo qualcosa di sbagliato lì?

risposta

14

È necessario assicurarsi di creare un descrittore di struttura di distribuzione JBoss.

Dal momento che questo è un progetto Maven Suppongo che sarebbe sotto src/main/webapp/WEB-INF/jboss-distribuzione-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> 

In questo modo il supporto integrato per RESTEasy e Jackson per funzionare correttamente in JBoss 7.1.x o JBoss EAP 6.x. Senza questo descrittore RESTEasy utilizzerà il fornitore di scarico.

+0

Grazie mille, Mark, questo ha funzionato (JBoss EAP 6.3) per me e posso riprendere il mio riposo felice codifica :) –

Problemi correlati