0

我从 uri 中获取 id,并将其作为条件放在我的 sql 请求中,然后将结果转换为 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文件?谢谢 ?

4

1 回答 1

0

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

  • 在类上使用 @XmlRootElement 注释的客户对象和其他 xml 注释来告诉 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 的依赖才能使用它。

于 2015-10-11T19:52:54.463 回答