2009-12-21 11 views
7

Więc piszę sprężyna (2,5 (+ Jersey (1.1.4.1) i stara się stworzyć JSONConfiguration użyciu ContextResolver Oto kod:.Jersey realizacji ContextResolver <JAXBContext> wiosną

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

Niestety moja aplikacja wciąż powracający domyślnego mapowania:

{ "id": "1", "pytanie": "Jaki jest/była nazwa Twojego pierwszego zwierzaka"}

Kiedy debuguję aplikację, nigdy nie uderza ona w ten kod. Czy jest to spowodowane używaniem SpringServlet? Oto moja konfiguracja Jersey w moim 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> 

Ktoś ma podobne ustawienia z działaniem JSONConfiguration?

Odpowiedz

12

Musisz zarejestrować się z dostawcą w kontekście wiosennej:

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

Lub, jeśli używasz konfiguracji adnotacji oparte, trzeba opisywać swoją klasę dostawcy z @Component i zawierać coś takiego

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

do konfiguracji kontekstu aplikacji.

+2

było to dość oczywiste rozwiązanie, ale chciałem, aby odpowiedzieć na wypadek gdyby ktoś inny miał pustą umysł jak mnie. :) – rhigdon

1

Używam wersji koszulki 1.10 i nie mam adnotacji @Component ani definicji fasoli, i działa bez niej.

-4


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

+0

W jaki sposób ta odpowiedź pomaga rozwiązać problem? Proszę wyjaśnij swoją odpowiedź. –

+0

Nie zmuszaj ludzi do używania Wiosny, kiedy nie chcą. – Orri