2009-12-21 16 views
7

所以我写一个Spring(2.5(+泽西岛(1.1.4.1),并尝试使用ContextResolver创建JSONConfiguration这里是代码:新泽西春季实施ContextResolver <JAXBContext>

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中我:

<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工作类似的设置?

回答

12

您需要注册您的供应商在你的Spring上下文:

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

或者,如果你正在使用基于注解的配置,你需要@Component注释您提供一流的,包括像

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

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

+2

这是一个很明显的解决方案,但我想万一有人来回答其他人有脑子一片空白像我一样。 :) – rhigdon 2009-12-21 23:29:29

1

我使用球衣版本1.10,我没有@Component注释和bean定义,它没有它的工作原理。

-4


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

+0

此答案如何解决问题?请解释你的答案。 – 2013-07-18 15:08:27

+0

不要强迫人们在他们不想要的时候使用Spring。 – Orri 2013-10-15 08:55:18