我在 apache Camel 中构建了一个 Web 服务,作为 karaf 上的捆绑包运行,它接受请求并将信息保存在数据库中。
之后,另一个包获取这个插入的记录,修改数据并将其保存回数据库。
现在我需要原始请求的响应来包含修改后的数据,因此除了如下所示的 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>
有什么办法可以做到这一点?
我找到了另一个解决方案:我正在使用直接 VM 组件。我的路由现在如下所示:
捆绑1接收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)" />
<to uri="direct-vm:processHop" />
</route>
在处理我刚才插入的数据的捆绑包2中:
<route>
<from uri="direct-vm:processHop"/>
<to uri="sql:SELECT * FROM myTable WHERE processed = false" />
<process ref="getHopComputopUrlProcessor" />
<to uri="sql:UPDATE webshop_gethop_requests SET new_data = :#newData, processed = true WHERE some_id = :#someId" />
<to uri="direct-vm:response"/>
</route>
然后再次返回bundle 1以发送带有处理后数据的响应:
<route>
<from uri="direct-vm:response" />
<to uri="sql:SELECT some_id,new_data FROM myTable WHERE some_id = :#someId AND processed = true" />
<process ref="getHopResponseProcessor" />
</route>
这对我来说很好:)
作为第一条路线的最后一步,您必须将身体设置为所需的响应。无法将响应设置在此路由之外。
所以我认为有两种方法可以解决你的问题。
对于变体 2,您可以使用像 jms 这样的消息传递,也可以为第一次调用提供一个 Web 服务 uri 来回调。
如果您的服务负载很高,完全异步的方法可能会使您的系统工作得更好。
我有一个要求,其中,作为Web服务[Java]的一部分,我将作业的详细信息输入数据库,数据库由Windows服务[C#]异步处理,并对Javaweb服务通知作业的状态。 情景: 客户端对JavaWeb服务进行同步Restful调用。 JavaWeb Service将作业详细信息输入数据库(类似于进行异步调用),并等待Windows Service的响应(这是对JavaWeb Service的新HT
我有以下服务: 和其他服务 我有我的Junit 当我在调试模式下运行这个测试时,我看到这个。合同服务。getInfo(multipartFileId) 正在返回我“null”。 我在嘲弄中错在哪里。 我刚刚在JUnit中嘲笑了ContractService。我还需要模拟AccountServiceImpl吗? 编辑:添加saveInCache和getInfo方法
问题内容: 是否可以在angularJS中将一个服务注入到另一个服务中? 问题答案: 是。遵循angularjs中的常规注入规则。 感谢@simon。最好使用数组注入以避免最小化问题。
我使用Reavt V6路由。 我正在努力让我的路线在游戏组件中工作。 在完全空白的页面中查看/测试结果。而它应该在gamecomponent中加载犯罪模块。访问/呈现gamecomponent,但/test不会呈现gamecomponent及其内部的路由。 我怎样才能让它工作? 访问url/crime会导致被加载,并且 应该上膛了。 app.js 专用路线: 游戏成分:
问题内容: 是否可以在python中使用一行命令来做一个简单的ftp服务器?我希望能够以这种快速和临时的方式来执行此操作,而无需将FTP服务器安装到Linux机器上。最好是使用内置的python库的方法,因此无需额外安装。 问题答案: 强制性扭曲示例: 可能有用:
我正在使用空手道版本0.8.0.1,我想执行以下步骤来测试一些响应。 > 使用jsonpath从web服务1的响应中查找货币值: