1

我是 Mule 的新手,在使用拦截器堆栈元素时遇到了麻烦。

以下似乎是从他们的文档中直接取出的:http: //www.mulesoft.org/documentation/display/33X/Using+Interceptors

<interceptor-stack name="default">
    <logging-interceptor/>
    <timer-interceptor/>
</interceptor-stack>

<flow name="MyFlowFlow1" doc:name="MyFlowFlow1">

    <interceptor-stack ref="default"/>  <!--this is line 15 -->
    <logger level="INFO" message="Got here"/>

</flow>    

但我得到一个例外,说它无效。

有人可以告诉我我做错了什么吗?

org.xml.sax.SAXParseException; lineNumber: 15; columnNumber: 43; cvc-complex-type.2.4.a: Invalid content was found starting with element 'interceptor-stack'. One of '{"http://www.mulesoft.org/schema/mule/core":annotations, "http://www.mulesoft.org/schema/mule/core":description, "http://www.mulesoft.org/schema/mule/core":abstract-message-source, "http://www.mulesoft.org/schema/mule/core":abstract-inbound-endpoint, "http://www.mulesoft.org/schema/mule/core":abstract-message-processor, "http://www.mulesoft.org/schema/mule/core":abstract-outbound-endpoint, "http://www.mulesoft.org/schema/mule/core":abstract-mixed-content-message-processor, "http://www.mulesoft.org/schema/mule/core":response}' is expected.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
...etc...

编辑 - 这是为了解决下面的回复。

当通过 flow-ref 从另一个流调用时,第一个私有流可以完美运行。我看到了“到达这里”的消息和时间。

<flow name="test2Flow1" doc:name="test2Flow1">
    <timer-interceptor/>
    <logger level="INFO" message="got here" doc:name="Logger"/>
</flow>

但是,当从另一个流调用时,这第二个私有流不起作用......事实上,它甚至不会解析。唯一的区别是对定时器拦截器的显式使用更改为对包含定时器拦截器的拦截器堆栈的引用。

<interceptor-stack name="default">
    <timer-interceptor/>
</interceptor-stack>

<flow name="test2Flow1" doc:name="test2Flow1">
    <interceptor-stack ref="default"/>
    <logger level="INFO" message="got here" doc:name="Logger"/>
</flow>
4

3 回答 3

0

我认为您的流程无效,因为它没有消息处理器。

看一下流动的解剖结构。

http://www.mulesoft.org/documentation/display/current/Using+Flows+for+Service+Orchestration#UsingFlowsforServiceOrchestration-TheAnatomyofaFlow

于 2013-09-05T19:47:29.623 回答
0

您的消息处理器必须是流中的第一项

于 2013-09-05T20:53:21.573 回答
0

拦截器旨在用于组件内。
此配置应该有效:

<interceptor-stack name="default">
    <logging-interceptor/>
    <timer-interceptor/>
</interceptor-stack>

<flow name="test2Flow1" doc:name="test2Flow1">
    <pooled-component class="com.MyComponent">
        <interceptor-stack ref="default"/>  <!--this is line 15 -->
    </pooled-component>
    <logger level="INFO" message="Got here"/>
</flow>   
于 2013-09-05T22:13:05.883 回答