我使用maven,Spring,Apache CXF创建了一个webapp。
如果我将服务设置为生成XML,那么一切正常,我得到了结果。 如果我将服务设置为产品JSON,我就没有结果。
这是pom文件依赖项:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
</dependencies>
这是春天上下文文件:
<context:component-scan base-package="com.training" />
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
<jaxrs:server id="jaxrsServer" address="/">
<jaxrs:providers>
<ref bean="jsonProvider"/>
</jaxrs:providers>
<jaxrs:serviceBeans>
<ref bean="libraryServices"/>
</jaxrs:serviceBeans>
</jaxrs:server>
这是服务
@Path("/services")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface LibraryServices {
@GET
@Path("/book/{id}")
public Response getBook(@PathParam("id") Integer bookId);
}
这是Response类(有getter和setter)
@XmlRootElement
public class Response {
private boolean success;
private String methodName;
private Object object;
}
当然还有服务的实现。
使用XML我得到了很好的答案:
<response>
<methodName>getBook</methodName>
<success>false</success>
</response>
使用JSON我什么都没得到。
我认为这可能是移民问题。
请帮帮我 问候,Ido
编辑:
我发现在简单的GET上我获得500状态。试图创建一个“外部拦截器”来找出正在发生的事情,但一切似乎都没问题。我甚至可以在消息内容中看到我想要返回的对象。
我只使用简单的GET调用。比进入服务器并可以调试代码。 我使用随机字段生成一个简单的集合,然后代码完成,我根本没有数据。
我生成了一个模拟问题的简单项目,但我无法在此处加载。
答案 0 :(得分:0)
想出来......
我需要更多依赖项:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
这就是......