Таким образом, я пишу 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;
}
}
К сожалению, мое приложение все еще возвращает отображение по умолчанию:
{"идентификатор": "1", "вопрос": "Каково имя Вашего первого домашнего животного?"}
Когда я отлаживаю приложение, оно никогда на самом деле поражает этот код. Действительно ли это происходит из-за использования 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?
Вам необходимо зарегистрировать своего провайдера в контексте Spring:
<bean class="com.company.jersey.config.JAXBContextResolver"/>
Или, если вы используете конфигурацию на основе аннотаций, вам нужно аннотировать свой класс провайдера с помощью @Component
и добавьте что-нибудь вроде
<context:annotation-config />
<context:component-scan base-package="com.company.jersey" />
в конфигурацию контекста вашего приложения.