获取 OSGi 捆绑包上下文的最佳技术?

2022-09-01 03:36:47

我的OSGi项目中的每个捆绑包都有自己的BuzzerActivator,我认为这是正常的。这将传递到当前的 BundleContext,这对于获取服务引用等非常有用。

但是,从我的捆绑包中的类中,我如何获得捆绑包上下文?在 BundleActivator 中将其分配给公共静态字段很糟糕,并且将其作为参数传递也很糟糕。有没有更智能的方法?


答案 1

您可以使用 .FrameworkUtil.getBundle(ClassFromBundle).getBundleContext()

请参阅 FrameworkUtil JavaDoc


答案 2

在我看来,开发OSGi捆绑包的一个很好的做法是尝试尽可能集中地编写与OSGi相关的代码。这样,如果要在非 OSGi 环境中使用代码,迁移工作量最小。

因此,到处使用静态引用或FrameworkUtil并不是一个好主意。两者都没有使用普通的OSGi。尝试查看iPOJO或声明性服务。


推荐