2012-05-23 52 views
2

升级ServiceMix容器上的库(FuseESB编译)的过程是什么?在ServiceMix上升级库的步骤

我使用的是使用Spring 3.0.5的Fuse版本4.4.1。新版本的Spring可用,所以,当我想使用它时,我该怎么做?

那些在startup.properties中直接引用的任务是显而易见的,但是对于其他人来说,比如Spring呢?我在Google上搜索更新过程描述,但没有付出努力。你是否已经手动完成了这样的更新,并且可以写出除了复制新罐子之外需要完成的工作?

Spring驻留在system/org/springframework目录中。我可以简单地转到那个目录并将Spring jar替换为更新的版本吗?

ServiceMix没有很好的文档记录,我还没有找到有关此过程的信息。

回答

2

Fuse ESB v4.x堆栈是一个以Karaf为内核的OSGi容器。它可以像创建基于项目依赖关系构建的特定于应用程序的功能XML一样简单,从而避免ESB附带的预定义功能。

您可能遇到问题的一个方面是试图添加一个较新版本的“核心”(在startup.properties文件中定义的那些版本)ESB运行时依赖关系,这在OSGi容器中应该完全可以接受。这些软件包的旧版本虽然定义不明确,但导入只会指定版本包含而不是排除。然后,OSGi容器将查看与包定义的导入包和版本相匹配的所有可用包,而那些没有排除的包将在包初始化时获得最高可用版本。例如,如果存在一个对Spring Beans 2.5.6具有较强依赖性的核心包,但所述包仅指定版本= 2而不是版本= [2,3),则所述核心包将从Spring Beans 3捆绑而不是Spring Beans 2.5.6捆绑可能会破坏核心捆绑。

更糟糕的是,有些时候一些包可能会匹配2.5.6包而不是Spring3包,你会得到一个基本上爆炸的跨包含。是的,我见过这个。

基本上,你必须经历试验和错误。鉴于Fuse ESB提供的所有可能的排列组合,取决于运行时加载了哪些功能,不可能有一本烹饪书来精确定义升级容器所需的步骤。

相关问题