1

我有一个描述 Web 服务的 WSDL 文件。然而还没有实现,但我在 SoapUI 中创建了一个模拟服务,它被硬编码以一遍又一遍地给出相同的响应。

我希望 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 错误

4

2 回答 2

2

路线应该是这样的

from(file:data/input/soaprequest)
   .to(wsendpoint)
   .to(file:data/input/soapresponse)
于 2013-07-31T04:04:58.343 回答
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&amp;move=  {{destinationFolder}}/${file:name}-${date:now:yyyy-MM-dd-HHmmssSSS}.csv&amp;moveFailed= {{errorFolder}}/${file:name}-${date:now:yyyy-MM-dd-HHmmssSSS}.csv"
                    timeout="5000"/>
            <to uri="cxf:serviceAddress?serviceClass=SEIClassNameHere&defaultOperationName=methodYouWantToCall"/>
    </route> 
于 2013-07-31T07:42:43.443 回答