2015-01-14 11 views
12

sto implementando servizi web REST con Jersey 2.6,Jersey 2.6 Jackson fornitore di registrazione

sto avendo problemi di registrazione di un provider di Jackson per il supporto di JSON, ho implementato in base alla documentazione jeresy (https://jersey.java.net/documentation/2.6/user-guide.html#json.jackson).

  1. Add Maven dipendenza - Maglia-media-JSON-jackson
  2. implementato una classe di ContextResolver.
  3. Annotato con @Provider per abilitare "Funzionalità rilevabili automaticamente"
  4. web.xml ha il nome del pacchetto delle classi del provider, in modo che i provider vengano registrati durante la scansione.

ref: http://blog.dejavu.sk/2013/11/19/registering-resources-and-providers-in-jersey-2/

Per qualche ragione fornitore Jackson JSON non è registrata, mi sto perdendo qualcosa?

risposta

9

Fino a Jersey 2.9, questa funzione non viene rilevata automaticamente. È necessario registrare esplicitamente lo JacksonFeature nella sottoclasse Application/ResourceConfig o elencare il pacchetto Jackson nel web.xml dei pacchetti da analizzare.

Applicazione sottoclasse:

public class MyApplication extends ResourceConfig { 
    public MyApplication() { 
     register(JacksonFeature.class); // <----- Jackson Support 
     packages("the.package.of.your.resources"); 
    } 
} 

O web.xml:

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class> 
     org.glassfish.jersey.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value> 
      the.package.of.your.resources, 
      org.codehaus.jackson.jaxrs <!-- Jackson providers --> 
     </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

Vedi i dettagli here in the "Second Issue".

Oh, e solo una cronaca, il ContextResolver è solo quello di registrare il ObjectMapper in un contesto recuperabile, in modo che il MessageBodyReader/MessageBodyWriters poterlo riutilizzare. Ma non registra lo MessageBodyReader/Writer effettivo richiesto per il marshalling/unmarshalling.

+0

Grate, ho perso "org.codehaus.jackson.jaxrs" nel web.xml, ora sta provando a caricare le librerie di jackson, ma sto seguendo l'errore java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException –

+0

Quando lo ottieni? All'avvio o quando provi a inviare una richiesta? –

+0

Hai provato ad aggiungere altre dipendenze Jackson oltre quella di Jersey? –