2013-07-05 8 views
9

Sto facendo ricerche su Jersey e RESTEasy. La negoziazione di tipo multimediale per XML e JSON funziona bene e sono in grado di consumarli e produrli entrambi. Tuttavia, mi viene chiesto di produrre e consumare una risposta per un nuovo tipo di contenuto. Ad esempio, BSON o un tipo di contenuto personalizzato. Ho cercato su Google online ma non ho trovato molte informazioni al suo interno. C'è comunque, posso ancora usare l'annotazione @Produces e @Consumes in JAX-RS per il nuovo tipo di contenuto?Come gestire/creare nuovo tipo di contenuto/MediaType in JAX-RS?

Grazie in anticipo.

risposta

16

Sì, è possibile utilizzare @Produces e @Consumes con tipi di supporti personalizzati. Per utilizzare il tipo di supporto personalizzato durante il marshalling e il contenuto di riarmatura è necessario creare le implementazioni MessageBodyWriter e MessageBodyReader per gestire il tipo di supporto.

Ecco come implementare un tipo di supporto personalizzato:

  1. annotare i vostri metodi di risorse con @Consumes({"application/mycustomtype}) e @Produces({"application/mycustomtype}) come richiesto.

  2. Implementare le implementazioni personalizzate MessageBodyReader e MessageBodyWriter per supportare il tipo di supporto personalizzato.

  3. Annotate il vostro MessageBodyReader con @Provider e @Consumes({"application/mycustomtype})

  4. annotare il MessageBodyWriter con @Provider e
    @Produces({"application/mycustomtype})

+2

Ciao, grazie per i suggerimenti. Ha esaminato queste classi su Google e ha trovato utili anche questi collegamenti. [messagebodywriter] (http://alex.vanboxel.be/2010/11/09/evolve-with-messagebodywriter/), [messagebodywriter2] (http://stackoverflow.com/questions/16741853/how-to- write-an-xml-messagebodywriter-provider-with-jersey) e [esempio di ibm] (http://www.ibm.com/developerworks/library/wa-jaxrs/) Grazie mille. – wwj