Mule - 如何在 http:listener 中使用 set-session-variable?

Mule - How can I use set-session-variable in http:listener?

我有一个 composite-source 由 Mule 中的两个 http:listener 组成;

我想在收到来自这些侦听器的请求后基于每个侦听器设置一个变量;

但是在 mule 3.6.0 中部署时出现此错误:

org.mule.module.launcher.DeploymentInitException: SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'set-session-variable'. One of '{"http://www.mulesoft.org/schema/mule/core":annotations, "http://www.mulesoft.org/schema/mule/http":response-builder, "http://www.mulesoft.org/schema/mule/http":error-response-builder}' is expected.

我该怎么办??

这是我的代码:

<composite-source doc:name="Composite Source">
  <http:listener config-ref="HTTP_Listener_Configuration_Source1"
    path="/" doc:name="HTTP">
        <set-session-variable doc:name="Session Variable" value="#[x]" variableName="x" />
  </http:listener>
  <http:listener config-ref="HTTP_Listener_Configuration_Source2"
                path="/" doc:name="HTTP">
        <set-session-variable doc:name="Session Variable" value="#[y]" variableName="x" />
  </http:listener>
</composite-source>

P.S。我用 http:inbound-endpoint

完成了

在那里放置 set-session-variable 是非法的:Mule 模式不允许它。

原因是 http:listener 不是常规的 endpoint,就像 http:inbound-endpoint 一样,因此不支持这种嵌套,就像所有其他端点一样。

这很不幸,希望最终会得到修复。与此同时,您需要找到另一种方法来区分来自这两个侦听器的请求。

为此,我建议您检查他们创建的所有入站消息属性,寻找差异化因素。我期待 MULE_ 属性 在这里可用,但您必须检查您的特定上下文,以及您正在使用的特定 HTTP_Listener 配置。