Jersey在Spring中实现ContextResolver <jaxbcontext> </jaxbcontext>

时间:2009-12-21 21:38:54

标签: json spring jaxb jersey

所以我正在写一个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”,“问题”:“是什么/是   你的第一只宠物的名字?“}

当我调试应用程序时,它实际上从未命中过这段代码。这是由于使用SpringServlet吗?这是我的web.xml中的Jersey Config:

<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 个答案:

答案 0 :(得分:12)

您需要在春季环境中注册您的提供者:

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

或者,如果您使用基于注释的配置,则需要使用@Component注释您的提供者类,并包含类似

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

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

答案 1 :(得分:1)

我正在使用jersey版本1.10,我没有@Component注释,也没有bean定义,没有它就可以工作。

答案 2 :(得分:-4)


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