使用选择流控制的Mule路由Web服务

时间:2013-11-06 13:51:04

标签: web-services soap routing mule

我正在尝试使用选择流控制来路由SOAP Web服务,它依赖于有效负载来更改为匹配的Web服务。这是我的流程

<flow name="ProxyServiceFlow1" doc:name="ProxyServiceFlow1">
    <http:inbound-endpoint exchange-pattern="request-response"
        address="http://localhost:8081/hrManagerServiceProxy" doc:name="HTTP" />
    <set-variable variableName="clientType"
        value="#[message.inboundProperties['http.query.params']['clientType']]"
        doc:name="Set clientType" />
    <choice doc:name="Choice">
        <when expression="#[clientType == 'unsecure']">
            <cxf:proxy-service namespace="http://service.freetalk.viettel.com/"
                service="RegisterServiceService" payload="body" wsdlLocation="unsecure.wsdl"
                enableMuleSoapHeaders="false" doc:name="SOAP" />
            <http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://localhost:8081/HR/hrManagerService" doc:name="HTTP"/>
        </when>
        <otherwise>
            <cxf:proxy-service namespace="http://service.freetalk.viettel.com/"
                service="RegisterServiceService" payload="body" wsdlLocation="unsecure2.wsdl"
                enableMuleSoapHeaders="false" doc:name="SOAP" />
            <http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://localhost:8081/HR/hrManagerService" doc:name="HTTP"/>
        </otherwise>
    </choice>
</flow>

这只是我的想法,因为我谷歌很多次但仍然没有结果。有人请给我一些建议。

1 个答案:

答案 0 :(得分:1)

它不是需要与HTTP Outbound一起使用的cxf:proxy-service 它应该是cxf:proxy-client

尝试将cxf:proxy-client与http:outbound-endpoint一起使用。

    <choice doc:name="Choice">
        <when expression="#[clientType == 'unsecure']">
            <http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://localhost:8081/HR/hrManagerService" doc:name="HTTP">
                <cxf:proxy-client payload="body" enableMuleSoapHeaders="true">      
                </cxf:proxy-client> 
            </http:outbound-endpoint>
        </when>
        <otherwise>             
            <http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://localhost:8081/HR/hrManagerService" doc:name="HTTP">
                <cxf:proxy-client payload="body" enableMuleSoapHeaders="true">      
                </cxf:proxy-client> 
            </http:outbound-endpoint>
        </otherwise>
    </choice>

希望这有帮助。