Джерси, реализующий ContextResolver <JAXBContext>весной - PullRequest
7 голосов
/ 22 декабря 2009

Итак, я пишу Spring (2.5 (+ Джерси (1.1.4.1)) и пытаюсь создать JSONConfiguration с помощью ContextResolver. Вот код:

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

К сожалению, мое приложение все еще возвращает отображение по умолчанию:

{"id": "1", "question": "Что такое / было имя вашего первого питомца? "}

Когда я отлаживаю приложение, оно никогда не попадает в этот код. Это связано с использованием SpringServlet? Вот мой Конфигурация Джерси в моем 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>

У кого-нибудь есть подобная настройка с работающей JSONConfiguration?

Ответы [ 3 ]

12 голосов
/ 22 декабря 2009

Вам необходимо зарегистрировать вашего провайдера в контексте весны:

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

Или, если вы используете конфигурацию на основе аннотаций, вам нужно аннотировать класс вашего провайдера с помощью @Component и включать что-то вроде

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

к вашей конфигурации контекста приложения.

1 голос
/ 01 февраля 2012

Я использую джерси версии 1.10, у меня нет ни аннотации @Component, ни определения бина, и она работает без нее.

0 голосов
/ 18 июля 2013


Джерси REST Service
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages ca.gc.cbsa.ezfw.foundation.webservice 1

...