是否可以在春季3运行Mule 2.2.1?

时间:2013-01-18 19:50:25

标签: spring spring-security mule spring-3

我们有一个应用程序,目前正在运行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秒内启动,然后我注意到我的服务都没有加载。不幸的是,经过几天的调查后,我找不到一切都失败的地方,因为任何日志中都没有错误,包括弹簧和骡子日志。我的问题是可以让它们一起玩,或者我应该忘记让它发挥作用。

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

3 个答案:

答案 0 :(得分: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)

修改后的实现在这里:Mule in Trooper和使用它的示例类在这里:Trooper Mule container

答案 1 :(得分:0)

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

由于这个原因,升级可能适用于spring 3.0.x但是我很确定弹簧3.1.x已经破坏了某些东西(即this code已经引入以保持向后兼容性)。

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

答案 2 :(得分:0)

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