我在使用 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/