2

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

我使用的是 Fuse 版本 4.4.1,它使用的是 Spring 3.0.5。更新版本的 Spring 已经可用,那么,当我想使用它时,我应该怎么做呢?

对于那些在 startup.properties 中直接引用的任务,任务是显而易见的,但是其他的,比如 Spring 呢?我在谷歌中搜索更新过程描述,但毫不费力。您是否手动完成了此类更新,并且可以编写除了复制新 jar 之外需要做的事情?

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

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

4

1 回答 1

2

Fuse ESB v4.x 堆栈是一个以 Karaf 作为其内核的 OSGi 容器。它可以像创建一个应用程序特定的特性 XML 一样简单,该特性是基于项目依赖关系构建的,避免了 ESB 中包含的预定义特性。

您可能会遇到问题的一个领域是尝试添加更新版本的“核心”(那些在 startup.properties 文件中定义的)ESB 运行时依赖项,这在 OSGi 容器中应该是完全可以接受的。这些捆绑包的旧版本虽然具有定义不明确的清单,但导入只会指定版本包含而不是排除。然后,OSGi 容器将查看与捆绑包定义的导入包和版本匹配的所有可用包,而那些没有排除的包将在捆绑包初始化时获得最高可用版本。

例如,如果有一个核心捆绑包对 Spring Beans 2.5.6 有硬依赖,但该捆绑包仅指定了 version=2 而不是 version=[2,3),则该核心捆绑包将从 Spring Beans 3 获取包捆绑包而不是 Spring Beans 2.5.6 捆绑包可能会破坏核心捆绑包。

更糟糕的是,有时某些包可能与 2.5.6 捆绑包而不是 Spring 3 捆绑包匹配,并且您会得到一个基本上爆炸的交叉包含。是的,我已经看到了。

基本上,您必须反复试验。鉴于 Fuse ESB 提供给您的所有可能排列,取决于在运行时加载的功能,不可能有一本可以准确定义升级容器所需步骤的说明书。

于 2012-05-24T20:36:57.083 回答