1

我们有一个当前运行 spring 2.5.6 和 mule 2.2.1 的应用程序。我们决定继续升级应用程序以使用 Spring 3.2,我们还将 Spring Security 升级到 3.1。我了解 Mule 2.2.1 使用 spring 2.5.6 进行配置等等。我们将重构我们的代码并构建整个项目。然而,在部署应用程序并启动服务器后,我的服务器在大约 6 秒内启动,而不是正常的 30 秒,然后我注意到我的服务都没有加载。不幸的是,经过几天的调查,我找不到一切都失败的地方,因为包括 spring 和 mule 日志在内的任何日志中都没有错误。我的问题是有可能让这些一起玩,还是我应该忘记让它发挥作用。

我阅读了这篇文章http://lifeinide.blogspot.com/2012/07/spring-3-and-mule-2-initialized-by.html并按照这些说明进行操作,但仍然无法正常工作。Mule 说它启动得很好,没有任何错误,但我可以访问我的任何服务。有什么帮助吗?谢谢

4

3 回答 3

1

感谢@genjosanzo 的指点。它帮助我们更好地挖掘了这个问题并最终使它发挥作用。

@mtanzania,我们也有类似的需求——需要让 Mule 2.2.1 与 Spring 3.2.x 版本一起工作。升级到 Mule 3 涉及重写 Mule 扩展,例如异常处理策略、RabbitMQ Mule 传输等。因此排除了升级到 Mule 3。为了完成这项工作,您需要从模块中重写/更新 3 个 java 文件:

groupId:org.mule.modules
artifactId:mule-module-spring-config
version:2.2.1

实现来自:

groupId:org.mule.modules
artifactId:mule-module-spring-config
version:3.4.0

更具体地说,您需要更新/升级这些类:MuleBeanDefinitionDocumentReader.java、MuleApplicationContext.java 和 SpringXmlConfigurationBuilder.java

使用这些更新版本,您可以继续创建 MuleContext,例如:

SpringXmlConfigurationBuilder springConfigBuilder = new   SpringXmlConfigurationBuilder(muleConfigPaths);
MuleContext context = new DefaultMuleContextFactory().createMuleContext(springConfigBuilder)

修改后的实现在这里:Trooper 中的 Mule和使用它的示例类在这里:Trooper Mule 容器

于 2013-11-15T05:58:36.850 回答
0

Mule 使用一些内部 spring API 来解析 mule 配置并创建对应的 bean。

出于这个原因,升级可能适用于 spring 3.0.x,但我很确定 spring 3.1.x 出现了问题(即引入此代码是为了保持向后兼容性)。

升级骡子怎么样?大多数 2.2.x 语法仍然受支持,并且在较新的 mule 版本中引入了许多新功能。

于 2013-01-18T22:54:50.970 回答
0

FWIW,@regunathb 的上述回答是正确的。在这三个类中进行修补工作。但是,重要的是要注意,来自 mule-module-spring-config 的这些类的 3.4 版本不会按原样工作。您必须获取 @regunathb 在 GitHub 上发布的类的修改版本,否则您最终会遇到 3.4 和 2.2.1 之间的各种不兼容问题。

于 2014-12-03T14:49:22.823 回答