1

ミュール 3.3.1 CE

たぶん自爆しますが、以下はどうなっていますか?

XML ペイロードを取り込み、特に値を抽出するプライベート フローがあります。このカットダウンの例は機能します。

<flow name="MyFlow">
    <set-session-variable variableName="xyzMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
</flow>

これに VM インバウンド エンドポイントを配置して、再利用の問題を解決したいと考えています。ただし、そうすると、その xpath 呼び出しで例外が発生します。これにより問題が発生します。

<flow name="MyFlow">
    <vm:inbound-endpoint exchange-pattern="request-response" path="execute.xyz"/>
    <set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
</flow>

明らかな何かが見えません。これを引き起こしている VM エンドポイントの挿入は何をしますか?

Message               : There are two transformers that are an exact match for input: "class java.lang.String", output: "interface org.dom4j.Document". Transformers are: "XmlToDom4jDocument(class org.mule.module.xml.transformer.XmlToDomDocument)" and "XmlToDom4jDocument(class org.mule.module.xml.transformer.XmlToDomDocument)"
Code                  : MULE_ERROR-255

以下の議論に基づいて編集

MEL 構文の試行に関する議論に基づいて、いくつかの結果を以下に示します。

入力は次のとおりです (セキュリティ情報を除く)。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://applications.dnb.com/webservice/schema/">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
  <sch:AdvancedCompanySearchRequest>
  </sch:AdvancedCompanySearchRequest>
</soapenv:Body>
</soapenv:Envelope>

以下は、正常に実行される正確なコードです。コンソールに AdvancedCompanySearchRequest が表示されます。

<flow name="ExecuteDandB" doc:name="ExecuteDandB">
<!--    <vm:inbound-endpoint exchange-pattern="request-response" path="execute.dnb" doc:name="DnB"/>-->

    <set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
<!--    <set-session-variable variableName="dnbMethod" value="#[xpath('/S:Envelope/S:Body/*[1]').name]"/>-->
    <logger level="INFO" message="#[sessionVars['dnbMethod']]"/>        
</flow>

以下は、実行に失敗する正確なコードです。上記の 2 つの変圧器に関する例外が表示されます。

    <flow name="ExecuteDandB" doc:name="ExecuteDandB">
<!--    <vm:inbound-endpoint exchange-pattern="request-response" path="execute.dnb" doc:name="DnB"/>-->

<!--    <set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>-->
    <set-session-variable variableName="dnbMethod" value="#[xpath('/S:Envelope/S:Body/*[1]').name]"/>
    <logger level="INFO" message="#[sessionVars['dnbMethod']]"/>        
</flow>
4

1 に答える 1

1

ここで解決策を見つけることができます:

http://forum.mulesoft.org/mulesoft/topics/no_idea_why_i_am_getting_this_error-csv8r

これは、クラスパスに mule-module-xml.jar の 2 つのコピーを持つことについてです。

于 2013-09-27T18:08:00.030 に答える