0

soapAction に基づいて、メッセージをさまざまな jms キューにルーティングするタスクがあります。私が使用して<cxf:proxy-service>いるので、基本的に、WSDLに属性を設定する以外に、どの操作が呼び出されたかを見つける方法は他にありませsoapActionん(誰かが私に別のことを言わない限り)。だから、これは私が達成しようとしていたものです:

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

しかし、ロガーを使用して以下に示す式を出力しても、上記のコードは true と評価されません。"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>

Mule が 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>
4

1 に答える 1

2

WSDLにsoapAction属性を入力する以外に、呼び出された操作を見つける方法はありません。

これは正しくありません:私の答えhttps://stackoverflow.com/a/14163660/387927cxf_operationでフロー変数から操作を取得する方法を参照してください

MuleがSoapActionを二重引用符で囲まれた文字列として返す理由を知りたいのですが

SOAPActionヘッダーは、仕様に従って引用されています:http ://www.w3.org/TR/soap11/#_Toc478383528

したがって、式は次のようになります。

<when expression="#[message.inboundProperties['SOAPAction'] == '&quote;submitOrderStatus&quote;']">
于 2013-01-04T20:26:32.503 に答える