osgi - 如何在部署在 WAS 8.0 中的自己的 OSGi 应用程序中启动特定包?

标签 osgi equinox websphere-8 osgi-bundle declarative-services

我有一个相当复杂的 OSGi 应用程序,它使用声明式服务并设计为部署在 Equinox 中。现在的任务是使该应用程序可在 WAS 8 中部署。

第一次尝试非常务实:我部署了一个 EAR,它的启动与 Equinox 基本相同,经过一些 WAS 类加载策略调整后,它已经起作用了。

现在我想更进一步:摆脱 Equinox 运行时并在 WAS 8 中“本地”部署我的包。所以我编写了一个 EBA,由我的业务包、它们的依赖项和 Equinox DS 运行时组成。 EBA 作为 Assets 部署并集成到 BLA 中。应用程序甚至已启动并运行,但组件未初始化。

关键是为了让 DS 完成它的工作,必须在自己的业务包之前启动 equinox.ds(更新:不是必须的,下面讨论)。但是,我如何告诉要在部署的 EBA 中首先启动的包?我需要一些类似 Equinox 的 config.ini 文件。

我知道我可以使用 native 支持的蓝图重新连接我的组件,但坦率地说,这是我最不想做的事情。应该可以让 Equinox DS 工作,不是吗?

另一个问题是:如何为自己部署在 WAS 8 下的应用程序获取 OSGi 控制台?我想控制我的捆绑包,但似乎无法从管理控制台进行。

更新

感谢 BJ 和 Neil(下面的讨论),问题归结为“如何在部署在 WAS 8.0 中的我自己的 OSGi 应用程序中启动特定包?”

最佳答案

要回答问题的 OSGi 控制台部分,普通的 OSGi 控制台将无法工作,因为 OSGi 应用程序是在嵌套框架中管理的。 WebSphere 提供了自己的控制台,可以导航嵌套的应用程序:http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.osgi.nd.multiplatform.doc%2Ftopics%2Fta_admin_runtime_console.html

关于osgi - 如何在部署在 WAS 8.0 中的自己的 OSGi 应用程序中启动特定包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572189/

相关文章:

java - 在自定义 Web 应用程序中生成 LTPAToken 2

encryption - 在 Equinox 中访问 c​​om.sun.crypto.provider

java - 在 OSGi 中更好地处理线程上下文类加载器

java - CXF : java. lang.ClassNotFoundException : org. apache.cxf.transport.servlet.CXFServlet

java - OSGi 与 jboss 热部署

java - OSGi 包更新后如何重新布线框架

java - 通过 wsadmin 获取模块版本 (WAS 8.5)

java - 无法在 Eclipse 中启动 osgi 容器 (equinox)

java - 为什么需要在OSGi Security中授予java安全管理器所有权限

java - 如何让OSGI EventAdmin在多线程中处理事件