我正在寻找一种关闭OSGi容器的最佳实践。
目前,我们使用一个小型启动程序调用EclipseStarter.startup()并安装一些核心bundle。之后,启动程序终止。
测试GUI(作为bundle运行)关闭时调用System.exit(0)来关闭容器,但必须有比这更优雅的解决方案。
谢谢
我通常是这样终止框架的:
bundlecontext.getBundle(0).stop();
id为0的bundle是系统bundle。
我还在应用程序嵌入式环境中使用Equinox,并在系统Bundle上调用stop(),然后跟随EclipseStarter.shutdown()。您可能需要停止所有bundle。
由于没有保留状态,我从未真正担心过应用程序中的bundle关闭。
目前还没有标准的方法来实现这一点。OSGI将在下一个版本中将其作为其标准API的一部分,但我猜在所有OSGI容器实现此功能之前还需要一段时间。现在请使用特定于容器的代码,但要避免使用System.exit()。
敬礼,
Leen Toelen
bundleContext
是什么?不要给出变量名作为答案,因为阅读你的答案的人没有你的代码无法知道该变量的类型。 - searchengine27