gpt4 book ai didi

java - 如何使用 OSGI 打包和使用现有的 Java 库

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:22 25 4
gpt4 key购买 nike

在寻求帮助管理 Java 中相同库的不同版本的依赖关系后,有人建议我应该看一下 OSGI 实现。在截止日期的压力下,我真的可以使用一些帮助来避免我挖掘无休止的 OSGI 文档。我有一个正在运行的应用程序,它将使用一个新框架。该框架使用了我已经在使用的不同版本的 jar,因此我想将新框架打包为 OSGI 包。我可以让我的应用程序保持原样,只将 OSGI 包用作 JVM 中的容器吗?这意味着我将仅使用 OSGI bundle 将一组类与 JVM 的其余部分隔离开来,以避免不同版本的类之间发生冲突。换句话说,我想使用 OSGI 而无需将我的所有代码都带到基于 OSGI 的设置中。

亲切的问候塞夫

最佳答案

我在这里没有完整的答案,我只是想反驳 deterb 所说的:

First, you have to have your entire application within the OSGi framework.

事实并非如此。另一种方法是将 OSGi 容器嵌入到主机应用程序中。

这里棘手的部分是 OSGi 内部和外部之间的交互,因为代码位于不同的类加载器上。

您可以使用 OSGi 系统类路径使您的主机类对 OSGi 部分可见。反过来比较困难。

宿主代码与 bundle 交互的一种方式是一个对宿主应用程序和 bundle 都可见的接口(interface),即宿主的一部分。另一种方法是使用反射。

如果您在主机和 OSGi 之间有一个明确的分离,例如一个插件系统,那么这可能会工作得很好。

Being under a deadline pressure

这可能是个问题。 OSGi 有很多值得学习的地方,而且由于它即将成为主流,在社区知识、工具支持、库兼容性等方面还存在不足。

此时你应该问的最大问题是:我真的需要在运行时管理不同版本的依赖项吗?如果没有,即您可以在部署时解决问题(例如通过配置),那么可能有更简单的解决方案适合您。

关于java - 如何使用 OSGI 打包和使用现有的 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129689/

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