2009-12-21 5 views
7

Così sto scrivendo una molla (2,5 (+ Jersey (1.1.4.1) e cercando di creare un JSONConfiguration utilizzando un ContextResolver Ecco il codice:.Jersey attuazione ContextResolver <JAXBContext> nella primavera

package com.rhigdon.jersey.config; 

import com.sun.jersey.api.json.JSONConfiguration; 
import com.sun.jersey.api.json.JSONJAXBContext; 

import javax.ws.rs.ext.ContextResolver; 
import javax.ws.rs.ext.Provider; 
import javax.xml.bind.JAXBContext; 

@Provider 
public final class JAXBContextResolver implements ContextResolver<JAXBContext> { 
    private JAXBContext context; 

    public JAXBContextResolver() throws Exception { 
    this.context = new JSONJAXBContext(JSONConfiguration.mappedJettison().build(), "com.rhigdon.core.model."); 
    } 

    public JAXBContext getContext(Class<?> aClass) { 
    return context; 
    } 
} 

Purtroppo la mia app è ancora in restituzione del mapping predefinito:

{ "id": "1", "domanda": "Qual è/era il nome del tuo primo animale domestico"}

Quando eseguo il debug dell'applicazione, questo codice non viene mai effettivamente applicato. È dovuto all'utilizzo di SpringServlet? Qui è la mia Jersey Config nel mio web.xml:

<servlet> 
    <servlet-name>Jersey Spring Web Application</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Spring Web Application</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Qualcuno ha una configurazione simile con JSONConfiguration di lavoro?

risposta

12

È necessario registrare il proprio fornitore nel vostro contesto di primavera:

<bean class="com.company.jersey.config.JAXBContextResolver"/> 

Oppure, se si utilizza la configurazione di annotazione-based, è necessario annotare la classe provider con @Component e comprendono qualcosa come

<context:annotation-config /> 
<context:component-scan base-package="com.company.jersey" /> 

per la configurazione del contesto dell'applicazione.

+2

Questa è stata una soluzione abbastanza ovvio ma ho voluto rispondere nel caso qualcuno altro ha avuto un vuoto mente come me. :) – rhigdon

1

Sto usando la versione 1.10 della jersey e non ho l'annotazione @Component né la definizione del bean e funziona senza di essa.

-4


Jersey REST Servizio
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages ca.gc.cbsa.ezfw.foundation .webservice

+0

In che modo questa risposta aiuta a risolvere il problema? Per favore spiega la tua risposta. –

+0

Non forzare le persone a usare Spring quando non vogliono. – Orri