【问题标题】:How does Mule handle XML configuration that doesn't comply with its XML schema?Mule 如何处理不符合其 XML 模式的 XML 配置?
【发布时间】:2012-03-09 02:39:37
【问题描述】:

我被分配在使用 Mule 2 的旧系统上工作,我发现一些旧配置存在一些怪癖。最初编写文档的开发人员已经换了工作,所以从那以后没有人敢改变任何东西。

<service name="taskCompleted">
        <inbound>
            <jms:inbound-endpoint topic="namespace.transporttask.completed">
                <jms:jmsmessage-to-object-transformer />

                <!-- This section does not comply with Mule's XML schema 
                     (Element message-properties-transformer is not allowed here) -->
                <message-properties-transformer>
                    <add-message-property key="MULE_ENCODING" value="windows-1252" />
                </message-properties-transformer>
            </jms:inbound-endpoint>
        </inbound>
        <bridge-component />
        <outbound>
            ...
        </outbound>
    </service>

这只是我找到的示例之一,我的假设是 Mule 只是忽略了这样的配置,并且删除它是安全的,因为它可能什么都不做。这个假设正确吗?

【问题讨论】:

  • 去掉那条线后信心十足地测试这个东西不可行吗?
  • 确实是这样,但我很好奇 Mule 对明显无效配置的一般处理方式。

标签: java spring mule


【解决方案1】:

Mule 严格验证它加载的配置:如果元素放错位置或根本不允许,Mule 将不会加载配置并拒绝启动此应用程序。

如果 Mule 使用此配置启动正常,则表示它是有效的,并且评论在撒谎。

【讨论】:

  • 好的,所以实际上是 Mule 的 XML 模式有问题?
  • 或者使用 Mule 的复杂架构层次结构来验证 XML 的工具。我们在这里谈论的是 XML 编辑器吗?
  • 这也是一种选择。我正在使用 Intellij Idea 11。
【解决方案2】:

虽然 IntelliJ IDEA 为 IDE 提供了一流的基于 XML 模式的编辑,但它仍然不理想。根据经验,Mule 会在解析配置时进行全面验证。不过,IDE 可能会错误地将有效配置标记为错误。

而且,Mule 2.x 已经很老了,David 上面提到的更适用于 Mule 3。自 Mule 2 以来,架构有了重大改进。

【讨论】:

  • 好像是IDEA的问题。我看到他们过去曾遇到过这样的问题。升级到 Mule 3 会很好,但我认为这个遗留系统不会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2019-08-24
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多