2013-01-04 35 views
0

我的任務是根據soapAction將消息路由到不同的jms隊列。我使用的是<cxf:proxy-service>,所以除了在WSDL中填充soapAction屬性(除非有人告訴我否則),除此之外基本上沒有其他方法可以找到調用哪個操作。所以這就是我想實現:爲什麼Mule將WSDL soapAction作爲雙引號字符串返回

<choice> 
    <when expression="message.inboundProperties['SOAPAction'] == 'submitOrderStatus'"> 
    <jms:outbound-endpoint queue="mviq.1122.result" /> 
    </when> 
.... 
</choice> 

但上面的代碼不計算爲真實的,即使當我打印下面使用記錄器顯示的表情,我得到"submitOrderStatus"

<logger message="SoapAction is #[message.inboundProperties['SOAPAction']]" level="INFO" /> 

撞後我的頭太長,幾個小時的日誌文件解剖,我意識到所有的屬性值都沒有引用,除了SOAPAction。 因此改變我的流向這個救了我:

<when expression="message.inboundProperties['SOAPAction'] == '&quot;submitOrderStatus&quot;'"> 
    <logger message="Can evaluate this message.inboundProperties['SOAPAction'] == '&quot;submitOrderStatus&quot;'" level="INFO" /> 
    <jms:outbound-endpoint queue="mviq.1122.result" /> 
</when> 

我很好奇,想知道爲什麼騾子返回SOAPACTION爲雙引號字符串

編輯:了SoapUI發送此過線。我不確定爲什麼SOAPAction被引用。

POST http://localhost:61005/mvi/service HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "submitOrderStatus" 
Content-Length: 5355 
Host: localhost:61005 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)` 

下面是我的WSDL的一部分:

<wsdl:operation name="submitOrderStatus"> 
    <soap:operation soapAction="submitOrderStatus" style="document"/> 
    <wsdl:input name="submitOrderStatusRequest"> 
     <soap:body use="literal"/> 
    </wsdl:input> 
    <wsdl:output name="submitOrderStatusResponse"> 
     <soap:body use="literal"/> 
    </wsdl:output> 
    </wsdl:operation> 

回答

2

有沒有其他的方式來查找操作比WSDL

填充soapAction屬性調用其他這不是正確:看我如何從cxf_operation流量變量中獲得操作我的回答https://stackoverflow.com/a/14163660/387927

我很好奇,想知道爲什麼騾子返回SOAPACTION爲雙引號字符串

的SOAPAction頭均以按規範:http://www.w3.org/TR/soap11/#_Toc478383528

所以,你的表述應該是:

<when expression="#[message.inboundProperties['SOAPAction'] == '&quote;submitOrderStatus&quote;']"> 
+0

感謝David的鏈接。現在有道理。同樣,如果你能解釋使用'#[]'與在表達式中不使用它作爲消息路由器的一部分的區別,將會感激,因爲我在這兩種情況下看到了相同的結果。 –

+1

表達式的規範形式是在它們周圍使用'#[]'。騾有時在某些地方允許你不使用'#[]',但建議始終使用它們來確保結果。 –

相關問題