繁体   English   中英

如何在Apache Felix下为OSGi捆绑软件实现卸载方法?

[英]How can I implement an uninstall method for an OSGi bundle under Apache Felix?

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

我知道BundleActivator上的start和stop方法,但无法弄清楚在何处可以实现卸载方法。

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

使用Apache Felix卸载OSGi捆绑软件时,实现运行代码的正确方法是什么?

捆绑包无法观察到其自己的UNINSTALLED事件,因为捆绑包停止期间会删除其BundleListeners。 您将需要另一个未停止的捆绑包,以观察UNINSTALLED事件并执行任何所需的处理。

正如其他人所说,我认为您不能在捆绑包本身中做到这一点。 您可能必须为此使用另一个捆绑软件。

在其他捆绑软件中,您可以例如注册一个声明性服务(例如,使用Apache Felix SCR注释),并使用BundleTracker / BundleTrackerCustomizer监听添加和删除的捆绑软件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM