java - 另一条 route 的 Apache Camel 蓝图 Web 服务响应

标签 java web-services apache-camel osgi apache-karaf

我在 apache Camel 中构建了一个 Web 服务,作为 karaf 上的 bundle 运行,它接受请求并将信息保存在数据库中。

在此之后,另一个包获取此插入的记录,修改数据并将其保存回数据库。

现在我需要原始请求的响应来包含修改后的数据,因此除了如下所示的 Web 服务的路由之外

<route id="cxf">
    <from uri="cxf:bean:getHopEndpoint" />
    <recipientList>
        <simple>direct:${header.operationName}</simple>
    </recipientList>
</route>
<route id="getHop">
    <from uri="direct:getHop" />
    <process ref="getHopToDbProcessor" />
    <to
        uri="sql:INSERT INTO myTable (field1, field2) VALUES (:#field1, :#field2)"/>
</route>

我需要另一个这样的

<route id="cxfResponse">
    <from uri="sql:SELECT * FROM myTable"/>
    <!-- to web service response in any way -->
</route>

有什么办法可以做到这一点吗?

最佳答案

您必须将正文设置为所需的响应,作为第一条路线的最后一步。无法在此路由之外设置响应。

所以我认为有两种方法可以解决您的问题。

  1. 以同步方式在第一个路由内完成您需要做的所有事情
  2. 将您的服务更改为完全异步

对于变体 2,您可以使用 jms 之类的消息传递,或者为第一个调用提供一个 Web 服务 URI 以进行回调。

如果您的服务负载很高,完全异步的方法可能会让您的系统工作得更好。

关于java - 另一条 route 的 Apache Camel 蓝图 Web 服务响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32754970/

相关文章:

c# - 没有超时的异步 web 方法

java - Camel : redirect to url received by parameter

apache-camel - Camel CSV 转换为 Java 对象

java - 出于某种原因使用 FileWriter 和 BufferedWriter 清除文件?

Java 如何判断 HashMap 中的对象

Java:hasJREfinishedInitialization() - 如何检查jre是否已完成加载/初始化所有核心类?

java - 使用正则表达式检查字符串是否以数字字符开头和结尾

java - JSON 对象返回 "@"和字段名称。这是一个错误还是一个功能?

java - Apache Camel - GSON JsonSerializer 在路线上使用

web-services - Squeak/Pharo Web 服务的微框架