OSGi激活方法后备

时间:2016-04-12 06:39:19

标签: osgi blueprint-osgi declarative-services

我想知道是否可能以某种方式创建从一种激活方法到另一种激活方法的回退? 假设我有一个通过Declarative Services激活的软件包,但是SCR没有安装在相关的应用程序服务器上。是否可以与声明服务和蓝图激活器捆绑,并决定加载顺序? 例如:我可以创建一个包并指定它应该由SCR加载(如果可用),如果未安装SCR,则指定蓝图?

2 个答案:

答案 0 :(得分:3)

如果您想使用SCR功能,并且您的软件包安装在没有SCR的应用服务器中,那么最简单的答案就是安装SCR。它是一个小的捆绑包,它与您的捆绑包的依赖关系与您所依赖的包等一样多。

如果您确实无法安装SCR或依赖SCR已经可用,那么您需要编写BundleActivator。这通常只适用于非常低级别的管道和类型捆绑,或者在资源极其受限的设备上运行时。

答案 1 :(得分:1)

这是不可能的。我认为最好的做法是决定两者中的一个。如果您担心引入的其他依赖项,那么DS是更好的选择,因为它只需要一个捆绑包就可以工作。