我有一个相当复杂的 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 应用程序中启动特定包?”