2009-12-21 2 views
7

So schreibe ich eine Feder (2.5 (+ Jersey (1.1.4.1) und versuchen, eine JSONConfiguration mit einem ContextResolver erstellen Hier ist der Code:.Jersey ContextResolver <JAXBContext> im Frühjahr Umsetzung

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

Leider meine App noch kehrt die Standardzuordnung:

{ "id": "1", "Frage": "Was ist/war der Name Ihres ersten Haustieres"}

Wenn ich die Anwendung debugge, trifft sie diesen Code nie wirklich. Liegt das an der Verwendung des SpringServlet? Hier ist mein Jersey Config in meiner 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> 

jemand ein ähnliches Setup mit JSONConfiguration arbeiten?

Antwort

12

Sie müssen Ihren Provider im Frühjahr Kontext registrieren:

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

Oder wenn Sie mit Annotation-basierte Konfiguration, müssen Sie Ihren Provider-Klasse mit @Component und sind so etwas wie

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

zu Ihrer Anwendungskontextkonfiguration.

+2

Dies ist eine ziemlich offensichtliche Lösung war, aber ich wollte sonst falls jemand beantworten wie ich einen Geist leer hatte. :) – rhigdon

1

Ich benutze Jersey-Version 1.10 und ich habe weder die Annotation @Component noch die Bean-Definition, und es funktioniert ohne sie.

-4


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

+0

Wie hilft diese Antwort das Problem zu lösen? Bitte erläutern Sie Ihre Antwort. –

+0

Zwingen Sie die Leute nicht, den Frühling zu benutzen, wenn sie nicht wollen. – Orri