在ServiceMix上升级库的过程

时间:2012-05-23 09:19:57

标签: java jar upgrade apache-servicemix

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

我正在使用Fuse版本4.4.1,它使用的是Spring 3.0.5。可以使用更新版本的Spring,因此,当我想使用它时,我该怎么办?

使用startup.properties中直接引用的那些任务是显而易见的,但是与其他人一样,比如Spring?我正在Google中搜索更新程序说明,​​但没有付出任何努力。您是否已手动完成此类更新并可以编写除了复制新罐子之外需要完成的操作?

Spring位于system/org/springframework目录中。我可以直接转到那个目录并将Spring jar替换为新版本吗?

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

1 个答案:

答案 0 :(得分: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软件包而不是Spring 3软件包,你会得到一个基本上爆炸的交叉包含。是的,我已经看过了。

基本上,你必须通过反复试验来解决问题。考虑到Fuse ESB可以使用的所有可能的排列,取决于在运行时加载的功能,不可能有一本菜谱可以准确定义升级容器所需的步骤。