java - 如何在 Apache Felix 下实现 OSGi 包的卸载方法?

标签 java osgi apache-felix osgi-bundle

我在使用 Apache Felix OSGi 实现的应用程序中安装了许多 OSGi bundle 。其中一些 bundle 在卸载时需要运行额外的步骤。例如,删除临时文件或删除数据库中的相关行或其他日志记录。业务规则期望在卸载插件时而不是停止插件时发生这种情况。

我知道 BundleActivator 上的启动和停止方法,但我无法弄清楚在哪里可以实现卸载方法。

我也尝试过实现 BundleListener。这似乎在启动时调用,但在卸载时不调用。我正在 BundleActivator 的 start 方法中注册 BundleListener。我应该在其他地方注册它吗?

实现使用 Apache Felix 卸载 OSGi 包时运行的代码的正确方法是什么?

最佳答案

bundle 无法观察它自己的 UNINSTALLED 事件,因为它的 BundleListeners 在 bundle 停止期间被删除。您将需要另一个未停止的包来观察 UNINSTALLED 事件并执行任何所需的处理。

关于java - 如何在 Apache Felix 下实现 OSGi 包的卸载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877893/

相关文章:

java - 创建需要用户参数的 OSGI 服务

java - Arquillian+OSGi+测试不同的框架属性

java - Android:替换缺少的安全架构

java - 为什么 Google Guava Preconditions 的 checkArgument 不返回值?

java - 如何用 Java 录制网络摄像头视频?

java - 通过 Notes-UpdateSite 数据库将 jar 部署到 Domino 服务器,以 NoClassDefFoundException 结尾

java - 使用 ByteArray 安装 OSGi Bundle

java - 从 CLI 解锁 Redis 锁

java - 如何使用pdfbox在pdf最后一页的左下角位置应用数字签名图像?

java - 好的 OSGi 教程