2009-12-21 11 views
7

Así que estoy escribiendo un muelle (2.5 (+ Jersey (1.1.4.1) y tratando de crear un JSONConfiguration utilizando un ContextResolver Aquí está el código:.Jersey implementar ContextResolver <JAXBContext> en la primavera de

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

Desafortunadamente mi aplicación todavía está volviendo la asignación predeterminada:

{ "id": "1", "pregunta": "¿Cuál es/era el nombre de su primera mascota"}

Cuando depuro la aplicación, nunca llega a este código. ¿Esto se debe al uso del SpringServlet? Aquí está mi Jersey Config en mi 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> 

Alguien tiene una configuración similar con JSONConfiguration de trabajo?

Respuesta

12

Es necesario registrar su proveedor en su contexto primavera:

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

O, si está utilizando la configuración basada en anotación, necesita anotar su clase de proveedor con @Component e incluyen algo así como

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

a la configuración del contexto de su aplicación.

+2

Esta fue una solución bastante obvio pero quería responder en caso de que nadie más tenía una mente en blanco como yo. :) – rhigdon

1

Estoy usando jersey versión 1.10 y no tengo la anotación @Component ni la definición de frijol, y funciona sin ella. Servicio

-4


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

+0

¿Cómo ayuda esta respuesta a resolver el problema? Por favor explica tu respuesta. –

+0

No obligue a las personas a usar Spring cuando no lo deseen. – Orri

Cuestiones relacionadas