Mule VM端点

时间:2013-09-13 15:47:46

标签: xml mule endpoint

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

我没有看到明显的东西。虚拟机端点的插入导致了什么?

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>

以下是无法执行的确切代码。我看到了上述两个变压器的例外情况。

    <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>

1 个答案:

答案 0 :(得分:1)

你会在这里找到解决方案:

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

这是关于在类路径中有两个mule-module-xml.jar的副本。