0

我正在尝试使用此 Web 服务:来自另一个 wsdl 的http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl ......别担心,我只是想建立某种桥梁来测试 Web 服务调用根本不是逻辑,所以,我需要的流程是这样的

cxf:jaxws-service ---> Java bean ----> externalWebservice

问题是我找不到如何通过我的 java impl 类调用外部 web 服务,我需要将它注入到我的 bean 中,但我找不到如何去做。实际上我的流程是这样的:

    <flow name="soapservice" doc:name="soapservice">
        <http:inbound-endpoint exchange-pattern="request-response"
            address="http://localhost:60603/Hello" doc:name="HTTP" />
        <cxf:jaxws-service serviceClass="org.example.HelloWorld"
            doc:name="SOAP" />
        <component class="org.example.HelloWorldImpl" doc:name="Java" />
    </flow>

一切正常,服务返回入口参数,但我需要从 Weather Webservice 检索一些数据。有人可以帮助我使用 CXF 使用该 Web 服务吗?

谢谢!

4

1 回答 1

1

为此,最好的办法是创建另一个flow带有request-responseVM 入站和 CXF 客户端的客户端来使用远程 Web 服务。下面解释如何生成CXF客户端:http: //www.mulesoft.org/documentation/display/current/Consuming+Web+Services+with+CXF

然后你可以通过 Component Bindingsflow在你的注入这个其他(参见:http: //www.mulesoft.org/documentation/display/current/Component+Bindings)。这种方式将有可能通过接口调用调用远程 Web 服务,该接口调用在后台调用执行 CXF 客户端交互的流。componentorg.example.HelloWorldImpl

所以在你的情况下,假设:

  • CXF 生成的服务接口是com.cdyne.wsf.WeatherWS,
  • 你感兴趣的方法是getCityWeatherByZip
  • CXF 生成的服务客户端是com.cdyne.wsf.WeatherWS_Service,
  • 该类可以通过注入org.example.HelloWorld接收一个实例com.cdyne.wsf.WeatherWS

你会有类似的东西:

<flow name="soapservice">
    <http:inbound-endpoint exchange-pattern="request-response"
        address="http://localhost:60603/Hello" />
    <cxf:jaxws-service serviceClass="org.example.HelloWorld" />
    <component class="org.example.HelloWorldImpl">
        <binding interface="com.cdyne.wsf.WeatherWS"
            method="getCityWeatherByZip">
            <vm:outbound-endpoint path="callGetCityWeatherByZip"
                exchange-pattern="request-response" />
        </binding>
    </component>
</flow>

<flow name="getCityWeatherByZip">
    <vm:inbound-endpoint path="callGetCityWeatherByZip"
        exchange-pattern="request-response" />

    <cxf:jaxws-client
        clientClass="com.cdyne.wsf.WeatherWS_Service"
        port="WeatherSoap" operation="GetCityWeatherByZip" />

    <http:outbound-endpoint
        address="http://wsf.cdyne.com/WeatherWS/Weather.asmx"
        exchange-pattern="request-response" />
</flow>
于 2013-04-19T16:30:48.137 回答