java - 在 ServiceMix 上升级库的过程

标签 java jar upgrade apache-servicemix

在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 初始化时获得最高的可用版本。

例如,如果有一个核心 bundle 硬依赖于 Spring Beans 2.5.6,但该 bundle 仅指定了 version=2 而不是 version=[2,3),则该核心 bundle 将从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/

相关文章:

Java/Groovy/Grails 需要生成有意义的测试数据

wix - 使用 Wix 检测已安装的软件

java - 简单的 Android 游戏中 Intent 崩溃

java - 轴2 : employ inheritance for codegenerated request/response objects

java - jar 使用的资源

java - 在哪里可以找到 javax.validation.* 的实现?

java - 从导出的 Jar 执行时未找到 jdbc 驱动程序

Hibernate SessionFactory 与 Service Registry

hibernate - Spring Boot 覆盖第三方依赖版本

java - 如何在 QAF 中使用自定义元数据过滤测试用例?