Mule ESB - 在同一流程中配置多个组件

时间:2015-05-21 21:29:36

标签: java spring mule esb

我在尝试将Spring组件添加到Mule Flow时收到错误消息。这应该是一个常见的用户案例,但我无法找到正确的文档或示例。提前谢谢。

以下是原始配置并且工作正常:

<flow name="ApplicationEndpoint">
    <inbound-endpoint address="server:port/JSONAPI/"/>
    <jersey:resources>
        <component>
            <spring-object bean="myJerseyService"/>     
        </component>            
    </jersey:resources>

    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <flow-ref name="ErrorHandling" doc:name="Flow Reference"/>
    </catch-exception-strategy>         
</flow>

我只是想添加一个新组件来进行一些后期处理。当我尝试这个时,它不起作用:

<flow name="ApplicationEndpoint">
    <inbound-endpoint address="server:port/JSONAPI/"/>
    <jersey:resources>
        <component>
            <spring-object bean="myJerseyService"/>     
        </component>            
    </jersey:resources>
    <component>
      <spring-object bean="postProcessor"/>
    <component>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <flow-ref name="ErrorHandling" doc:name="Flow Reference"/>
    </catch-exception-strategy>         
</flow>

其中“postProcessor”将配置中的其他位置映射为spring bean。

我得到的错误信息是:

org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:从元素'component'开始发现无效内容。其中一个'{“http://www.mulesoft.org/schema/mule/core”:abstract-lifecycle-adapter-factory,“http://www.mulesoft.org/schema/mule/core”:binding}'是预期的。

1 个答案:

答案 0 :(得分:1)

上述错误清楚地表明标签<component>未关闭..

例如,它应该采用以下格式: -

 <component>
    <spring-object bean="postProcessor"/>
 </component>

您需要结束以下标记: - </component>

还有一件事......我尝试运行您的代码,但由于server:port/JSONAPI/地址中配置了inbound-endpoint,因此出现错误,指出xml格式错误

所以我修改了你的代码并成功运行: -

<flow name="ApplicationEndpoint">
    <inbound-endpoint address="http://localhost:8189/JSONAPI"/>
    <jersey:resources>
        <component>
            <spring-object bean="myJerseyService"/>     
        </component>            
    </jersey:resources>
    <component>
      <spring-object bean="postProcessor"/>
    </component>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <flow-ref name="ErrorHandling" doc:name="Flow Reference"/>
    </catch-exception-strategy>         
</flow>

因此,您现在可以使用它并根据您的要求进行修改