7

所以我正在写一个 Spring(2.5( + Jersey(1.1.4.1) 并尝试使用 ContextResolver 创建一个 JSONConfiguration。这是代码:

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 中的 Jersey 配置:

<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 工作?

4

3 回答 3

12

您需要在 spring 上下文中注册您的提供程序:

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

或者,如果您使用的是基于注解的配置,您需要对您的提供者类进行注解@Component并包含类似的内容

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

到您的应用程序上下文配置。

于 2009-12-21T23:28:37.173 回答
1

我使用的是 jersey 1.10 版,我没有 @Component 注释,也没有 bean 定义,没有它也可以工作。

于 2012-02-01T06:41:06.697 回答
-4


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

于 2013-07-18T14:48:08.040 回答