部署在osgi框架中的bundle如何让它在启动的时候不启动,而是通过我的程序控制它启动。

我现在写了一个OSGI的程序, 有三个bundle ,我想让其中的两个bundle在启动osgi 的时候不启动,而是通过第三个bundle 中的start方法控制他的启动、请问 怎么办?
2026年09月25日 03:20
有2个网友回答
网友(1):

可以在config.ini中设置要加载的bundle时不要为那两个bundle增加:start,不让其自动启动,在第三个bundle的Activator.start中获取到这两个要启动的bundle,然后执行bundle.start方法进行启动。
要注意osgi会缓存上次运行中bundle的状态,在下次启动时自动恢复,所以最好在启动前有清理缓存的操作,或者在第三个bundle的Activator.start中检测先那两个bundle的状态,如果已经是start了就先stop。

网友(2):

启动是有level的,你可以配置。
不过依赖于其他程序启动而启动的bundle,说明设计不佳。因为osgi的理念就是考虑所有的bundle有可能被替换,升级。 bundle之间不该有严重的依赖。