【发布时间】:2026-01-20 00:40:01
【问题描述】:
我有一个相当复杂的 OSGi 应用程序,它使用声明式服务并被设计为部署在 Equinox 中。现在的任务是让这个应用程序可以在 WAS 8 中部署。
第一次尝试非常实用:我部署了一个 EAR,它启动了基本相同的 Equinox,并且在对 WAS 类加载策略进行了一些调整之后,它已经工作了。
现在我想更进一步:摆脱 Equinox 运行时并在 WAS 8 中“本地”部署我的包。所以我编写了一个 EBA,由我的业务包、它们的依赖项和 Equinox DS 运行时组成。 EBA 作为资产部署并集成到 BLA 中。应用程序甚至已启动并运行,但组件未初始化。
关键是必须在自己的业务包之前启动 equinox.ds (更新:不是必须的,下面将讨论) 以使 DS 完成它的工作。但是我如何告诉捆绑包在部署的 EBA 中首先启动?我需要一些 Equinox 的 config.ini 文件的模拟。
我知道我可以使用原生支持的蓝图重新连接我的组件,但坦率地说,这是我最不想做的事情。应该可以让 Equinox DS 工作,不是吗?
另一个问题是:如何为自己在WAS 8 下部署的应用程序获取OSGi 控制台?我想控制我的捆绑包,但似乎无法从管理控制台进行。
更新
感谢 BJ 和 Neil(以下讨论),问题归结为“如何在我自己的部署在 WAS 8.0 中的 OSGi 应用程序中启动特定的捆绑包?”
【问题讨论】:
-
您无需在 DS 处理捆绑包之前启动 DS。您使用的是传统的 WAS 还是 Liberty Profile?
-
您必须启动 quinox.ds。否则组件初始化应该如何发生?
-
关于配置文件类型:我们使用 WAS 8.0,AFAIK Liberty Profile 尚未在那里引入,但在配置文件管理工具中我选择了“开发”类型的配置文件。
-
BJ 正在强调开始订购。是的,您需要启动 DS,但您可以在所有其他捆绑包之前或之后启动它。
-
不!之前有效。后有效。中间有效。您可以按任意顺序启动捆绑包。
标签: osgi equinox websphere-8 osgi-bundle declarative-services