【问题标题】:Apache ServiceMix! Request-Replay Web Service message阿帕奇服务组合!请求重播 Web 服务消息
【发布时间】:2014-03-05 14:53:17
【问题描述】:

你好!

我正在尝试学习一些Apache CamelApache CXF,当然我遇到了一些问题。

我想要做什么:

从 ESB 向某个 Web 服务发送定时 SOAP 消息,等待来自 Web 服务的响应并处理它。我正在使用 Apache ServiceMix!。

我做了什么:

实现了一个 WSDL 文件,其中包含两个操作 PingOutput(我发送的内容)和 PingInput(我想从 WS 接收的内容)。

实现了一个 CXF 端点(http://127.0.0.1:8090/ping_ws 是一个用 SoapUI 模拟的 WS):

<cxf:cxfEndpoint address="http://127.0.0.1:8090/ping_ws"
                 id="Ping_Mocked_WS" wsdlURL="ping.wsdl">
    <cxf:properties>
        <entry key="dataFormat" value="PAYLOAD" />
    </cxf:properties>
</cxf:cxfEndpoint>

实施了骆驼路线:

<camelContext xmlns="http://camel.apache.org/schema/spring" streamCache="true">
    <route id="ping-ws">
        <from uri="timer://ping_timer?fixedRate=true&amp;period=10000"/>
        <bean ref="PingBean" method="createPingRequest" />
        <to uri="cxf:bean:Ping_Mocked_WS"/>
        <bean ref="PingBean" method="processPingResponse" />
    </route>
</camelContext>

我不明白的地方:

  1. 为什么&lt;bean ref="PingBean" method="processPingResponse" /&gt; 从 SoapUI 获得正确的响应(WSDL 中定义的PingOutput 操作)?
  2. 这是实现目标的正确方法吗?我的意思是只有一条路线?

代码可以正常工作,我这里可能有一些拼写错误,请不要介意。

谢谢!

【问题讨论】:

    标签: web-services soap cxf apache-camel soapui


    【解决方案1】:

    广告 1)

    可能是因为 processPingResponse 方法的方法签名中定义的类型。 Camel 使用 bean 参数绑定,并根据类型,使用其类型转换器转换为给定的类型。

    由于负载是 XML 中的 SOAP 响应,它可以使用 JAXB 从 XML 转换为方法签名中的类型。

    为此,它使用了 ServiceMix 开箱即用的 camel-jaxb。

    广告2) 该路线有效。你想做什么不同的事情?

    【讨论】:

    • 1.我会查看camel-jaxb 文档,希望能更好地理解它。 2.我不想对此无动于衷,只是不知道这是否是正确的方法:)。感谢您的回答!
    猜你喜欢
    • 2017-02-17
    • 2012-04-17
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2019-03-15
    • 1970-01-01
    • 2018-08-14
    相关资源
    最近更新 更多