我如何获得xml响应(CXFRs webservice)?

时间:2015-08-28 09:28:23

标签: xml web-services rest apache-camel cxfrs

我从uri获取id,并将其作为我的sql请求中的condiontion 我把结果放到XML格式后

这是功能:

package com.mycompany.camel.blueprint;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
public class Testws {
    @GET
    @Path("/test/{id}")
    @Produces(MediaType.APPLICATION_XML)
    public Integer getAssets(@PathParam("id") int id){

        return id;
    }
  }

这是路线:

<camelContext id="camel"    xmlns="http://camel.apache.org/schema/blueprint">
     <route>
       <from uri="cxfrs://bean://rsServer"/>
       <log message="${body}"/>
       <convertBodyTo type="java.lang.Integer"/>
       <to uri="sql:select * from customers where id=:#${body}?exchangePattern=InOut&amp;dataSource=moodleDB"/>
            </route>    </camelContext>

以下错误:http://localhost:5070/route/test/1

This page contains the following errors:

error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.

我怎样才能获得xml文档?谢谢?

1 个答案:

答案 0 :(得分:0)

要使用cxfrs从驼峰路线返回xml,您需要做一些事情:

  • 在类和其他xml注释上使用@XmlRootElement注释的客户对象,告诉jaxb如何编组它
  • 在cxf服务器中定义的xml提供程序,如下所示:

    <cxf:rsServer id="rsServer" address="${url}">
        <cxf:serviceBeans>
            <bean class="com.mycompany.camel.blueprint.Testws"/>
        </cxf:serviceBeans>
        <cxf:providers>
            <bean class="com.fasterxml.jackson.jaxrs.xml.JacksonJaxbJsonProvider"/>
        </cxf:providers>
    </cxf:rsServer>
    

您需要将SQL调用的响应处理为客户对象列表,然后cxf可以使用此提供程序将其编组为xml。

你需要依赖jackson-jaxrs-xml-provider才能使用它。