当前位置: 首页 > 知识库问答 >
问题:

CXF rest service-XML工作正常,但不是JSON

顾乐心
2023-03-14

我使用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>

这是spring上下文文件:

<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);
}

这是响应类(有 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我什么也得不到。

我想大概是倾诉的问题吧。

请帮我问候,伊多

编辑:

我发现在一个简单的GET上我收到了500个状态。试图创建一个“out拦截器”来找出正在发生的事情,但一切似乎都很好。我甚至可以在消息内容中看到我想要返回的对象。

我只使用一个简单的GET调用。然后进入服务器并可以调试代码。我使用随机字段生成一个简单的集合,然后代码完成,我根本没有得到任何数据。

我生成了一个简单的项目来模拟这个问题,但我不能在这里加载它。

共有1个答案

姬慎之
2023-03-14

想通了...

我需要更多的依赖关系:

<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>

那就是全部...

 类似资料:
  • 我已经安装了Wamp Server 2.4。安装正常。我可以登录到本地主机。除了phpmyadmin页面之外,一切都正常(包括sqlbuddy和webgrind)。你能帮我解决可能导致这个问题的原因吗。我在这里附上apache访问日志: 127 . 0 . 0 . 1---[2013年7月17日:17:20:43 0530]" GET/phpmyadmin/HTTP/1.1 " 500-127 .

  • 我是Spring云和Spring后端开发的新手。我正在尝试用SpringCloudGateway开发一个简单的微服务。 Github链接到Discovery Server、Spring Cloud Api网关和用户微服务。令人惊讶的是,当我在Postman中执行API时,GET API起作用,但POST却不起作用。 我试着调试,但它并没有传到我的控制器上。我错过了什么?还是做错了?任何帮助或建议都

  • Log4j正在查找我的配置,因为一旦我删除它,我就会收到一条错误消息,说它找不到配置,但是它的属性在登录时不会反映出来。 log4j2。属性: Test.java: 输出: 如您所见,当记录器设置为INFO时,它将返回级别为ERROR,并且时间格式包括毫秒,即使它已被删除。 配置文件取自log4j网站,只做了一些小改动(上面提到的两个,以及) 我使用的是2.8.1版。

  • 我有一个程序,用来接受用户的图像。我改为接受PDF文件,而不是我们的客户要求的问题是它不工作。 我已经换了哑剧。php配置到这个 这是我保存上传文件的CI代码 HTML 滑动分页 编辑:jquery报告该文件已成功上载,因为它返回JSON,但每当我检查目录时,都没有任何内容。奇怪的是,我将文件扩展名重命名为。TXT并上传了一个3.5MB的pdf文件。txt扩展名,它已成功上载并位于正确的目录中。

  • 我使用了绝对定位(setBounds和null布局),现在开始练习布局管理器,这段代码是用gridbag布局的,但是很少组件没有显示,或者是单元格有一些问题,或者是其他的东西,请帮助!

  • 我试图创建一个基于警报的应用程序。我正在使用。问题是这一点都不可靠。在某些设备中,它起作用…在其他设备中,它的工作方式…而在其他设备中,它根本不起作用。 这是我的闹钟课: 这是我的OneTimeAlarm,只发射一次就不再发射的警报。 这是我的日常警报器,警报器一天只响一次。