我有一个描述Web服务的WSDL文件。但是还没有实现,但是我在SoapUI中创建了一个Mock服务,它是硬编码的,一遍又一遍地给出相同的响应。
我希望Camel从磁盘向Web服务发送SOAP请求,并将响应写入另一个文件。我在想这些路线看起来像这样:
from(file:data/input/soaprequest)
.to(wsendpoint)
from(wsendpoint)
.to(file:data/input/soapresponse)
然后我将它们添加到驼峰上下文中,我不确定这是否是正确的方法,但即使它是,我仍然在努力设置webserviceendpoint。由于我不能使用Spring XML,这就是我所拥有的:
CxfEndpoint wsendpoint = new CxfEndpoint();
wsendpoint.setAddress("http://localhost:9001/HelloWorld");
wsendpoint.setWsdlURL("http://localhost:9001/HelloWorld?WSDL");
wsendpoint.setServiceClass("com.generated.HelloWorld");
wsendpoint.setCamelContext(camelcontext);
然后我将wsendpoint传递给路线,如上所示。但什么都没发生。应用程序永远不会停止,它不会在输出文件夹中发布任何响应,它只是说
INFO: Setting the server's publish address to be http://localhost:9001/HelloWorld
我还尝试在应用程序仍在运行时从SoapUI发送请求,它在应用程序中没有任何变化,我在SoapUI中收到404错误
答案 0 :(得分:2)
路线应该是这样的
from(file:data/input/soaprequest)
.to(wsendpoint)
.to(file:data/input/soapresponse)
答案 1 :(得分:1)
您可以执行以下任务:
<!--Configure SOAP endpoint in camel-->
<cxf:cxfEndpoint id="cxfEndpoint"
serviceClass="SEIClassNameHere"
address="exposedAdress">
</cxf:cxfEndpoint>
<!--Configure consuming camel route-->
<route id="consumingFromCXFEndpointRoute">
<from uri="cxf:bean:cxfEndpoint"/>
<to uri="file:someFile"/>
</route>
<!--Configure producing camel route-->
<route id="producingToCXFEndpointRoute">
<from uri="timer://foo?period=60000"/>
<pollEnrich uri="file:{{sourceFolder}}?maxMessagesPerPoll=1&move= {{destinationFolder}}/${file:name}-${date:now:yyyy-MM-dd-HHmmssSSS}.csv&moveFailed= {{errorFolder}}/${file:name}-${date:now:yyyy-MM-dd-HHmmssSSS}.csv"
timeout="5000"/>
<to uri="cxf:serviceAddress?serviceClass=SEIClassNameHere&defaultOperationName=methodYouWantToCall"/>
</route>