我正在尝试使用 cxf 组件从骆驼消费网络服务,如下所示:
<cxf:cxfEndpoint id="webservice"
address="http://webservice.url.com/webservice"
serviceClass="com.url.webservice.MyWebService"/>
<camel:camelContext>
<camel:route>
<camel:from uri="direct:a"/>
<camel:inOnly uri="cxf:bean:webservice?defaultOperationName=sendMessage"/>
</camel:route>
</camel:camelContext>
该sendMessage
方法没有响应,因此inOnly
而不是to
(尽管我尝试to
替代时遇到了同样的问题)。问题是骆驼显然仍然希望得到响应,并且路由在等待响应时挂起。我想如果我让它尝试足够长的时间,它最终会超时。
为了清楚起见,我正在运行一个测试方法:
/* ... */
@Produce(uri = "direct:a")
protected ProducerTemplate directA;
@Test
public void sendMessage() throws Exception {
directA.sendBody(new String[] {"client id", "message"});
directB.sendBody(new String[] {"client id", "message 2"});
}
我看到了第一个调用的效果(即消息到达服务器),但不是第二个,并且该方法没有完成运行(再次,我假设它会在某个时候超时...如果是这样,超时时间很长:我在开始写这篇文章时运行了测试,它仍在运行)。
我错过了什么吗?它是一个错误吗?拥有没有响应的 Web 服务方法只是不好的做法吗?
顺便说一句,当测试有响应的方法时,它工作正常。