gpt4 book ai didi

java - 在 ServiceMix 上升级库的过程

转载 作者:行者123 更新时间:2023-11-30 09:36:31 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

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

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

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

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

关于java - 在 ServiceMix 上升级库的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com