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'] == '"submitOrderStatus"'">
<logger message="Can evaluate this message.inboundProperties['SOAPAction'] == '"submitOrderStatus"'" 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>