Camel / JavaEE - 将请求后的URL模式和从Rest端点发布的数据转发到以下路由/ webservices

时间:2017-06-02 11:42:58

标签: java oracle web-services java-ee apache-camel

我们正在使用camel将数据从我们的数据库路由到我们公司的几个最终用户。我们在camel中配置了几个休息端点,我们通过我们的Oracle数据库通过PL / SQL请求。

其余端点可能看起来像someserver.net/{interfaceId}/{season}/post。 在Oracle数据库中,我们发送一个逗号分隔的列表,其中包含由java Web服务处理的标识符。

我找不到任何有用的信息如何在转发发布的数据后使用url中的参数。 这就是我配置端点的方式:

<post uri="/{interfaceId}/{season}/post" produces="text/plain">
   <to uri="direct:postWithSeason" />
</post>

之后,我想要另一条接收数据和参数{interfaceId}和{season}的路线,并将它们传递给我们的网络服务,其网址为someserver.net/hub/xml/{interfaceId}/{season}/post。 Web服务正在创建一个XML文件,该文件将转发给最终用户。

路线将类似于

<route id="fetchData">
    <from uri="direct:postWithSeason" />
        <setHeader headerName="CamelHttpMethod">
            <constant>POST</constant>
        </setHeader>
        <setHeader headerName="CamelHttpUri">
            <simple>http://serverWithWebservice.net/</simple>
        </setHeader>
        <setHeader headerName="CamelHttpPath">
            <simple>hub/xml/{interfaceId}/{season}/payloadIds</simple>
        </setHeader>
        <to uri="http4:serverWithWebservice.net" />
        <to uri="file:/someDirectory?fileName=someFileName.xml" />
</route>

那么如何将PL / SQL过程调用的URL中的参数传递到沿着payloadIds的逗号分隔列表调用webservice的路径?我完全没有使用Java构建路由而不是使用XML DSL。

我正在使用JavaEE,Camel和HTTP请求几个月,所以我不熟悉所有基础知识,我找不到任何资源为我的问题提供解决方案。

1 个答案:

答案 0 :(得分:0)

Camel REST-DSL将这些存储为Camel Message标头,因此您可以通过${header.interfaceId}等获取,使用您构建的简单表达式

<setHeader headerName="CamelHttpPath">
  <simple>hub/xml/${header.interfaceId}/${header.season}/payloadIds</simple>
</setHeader>