Web services 如何使用Apache Camel将ActiveMQ连接到CXF

Web services 如何使用Apache Camel将ActiveMQ连接到CXF,web-services,jms,cxf,activemq,apache-camel,Web Services,Jms,Cxf,Activemq,Apache Camel,有人知道一个将ActiveMQ连接到CXF的工作示例吗?我看到了许多将Web服务连接到消息队列的示例,但我需要相反的方法。来自JMS队列的消息应转发到web服务,并将结果返回给调用者 我的第一种方法仅适用于公开一种方法的web服务: 从(“activemq:wsa”)到(“cxf:bean:webserviceca”); Status msg=producerTemplate.requestBody(“activemq:wsa”,参数,Status.class); 但对于具有多个方法的web

有人知道一个将ActiveMQ连接到CXF的工作示例吗?我看到了许多将Web服务连接到消息队列的示例,但我需要相反的方法。来自JMS队列的消息应转发到web服务,并将结果返回给调用者

我的第一种方法仅适用于公开一种方法的web服务:

从(“activemq:wsa”)到(“cxf:bean:webserviceca”);
Status msg=producerTemplate.requestBody(“activemq:wsa”,参数,Status.class);
但对于具有多个方法的web服务,类似的调用会导致ExchangeMedimeOutException

Map header=newhashmap();
标题.put(CxfConstants.OPERATION_NAME,“doSomething”);
header.put(CxfConstants.OPERATION_名称空间,“http://.../"); 
Status msg=producerTemplate.requestBodyAndHeaders(“activemq:wsb”,参数,头,状态.class);
然而,我可以看到请求被转发到web服务,并且返回了正确的答案。但不幸的是,它在回来的路上迷路了

任何关于外部资源的提示或链接都将不胜感激

许多方面,
Jakob

ActiveMQ和JMS调用是单向默认值,您可能希望将其指定为同步

除此之外,使用ActiveMQ作为CXF生产者的启动程序应该没有什么不同

建议下载Camel源代码并查看此文件夹:

\components\camel-cxf\src\test\java\org\apache\camel\component\cxf

(或通过网络:)


您将有大量的CXF producer测试用例作为参考资料。

当web服务返回未实现可序列化接口的类的对象时,即使这些类是可序列化的,也会出现问题


实现可序列化接口解决了这个问题。

ProducerTemplate的requestBody设置InOut MEP,所以这不是原因。应该注意的是,第一个例子是有效的。只是,它只适用于具有单个方法(operationName)的web服务,而不适用于具有多个方法的web服务。