【发布时间】:2014-11-10 17:47:42
【问题描述】:
我在使用 Apache Felix OSGi 实现的应用程序中安装了许多 OSGi 包。其中一些捆绑包在卸载时需要运行额外的步骤。例如删除临时文件或删除数据库中的相关行或其他日志记录。业务规则希望在卸载插件时发生这种情况,而不是在停止时发生。
我知道 BundleActivator 上的启动和停止方法,但我不知道在哪里可以实现卸载方法。
我也尝试过实现一个 BundleListener。这似乎是在启动时调用的,但不是在卸载时调用的。我在我的 BundleActivator 的启动方法中注册我的 BundleListener。我应该在其他地方注册吗?
在使用 Apache Felix 卸载 OSGi 包时,实现代码运行的正确方法是什么?
【问题讨论】:
-
这个资源提供了我能想到的每一个可能的搜索词:eclipsesource.com/blogs/2013/01/23/… 它似乎捕捉到了卸载事件,但我的代码没有。 ServiceListener 也有几个 Apache Felix 示例,但 BundleListener 没有。
-
是的,该博客提到了可以提供帮助的 BundleWatcher 接口,但您的问题是特定于 Felix 实现的。
标签: java osgi apache-felix osgi-bundle