OSGi 激活方法回退

OSGi activation method fallback

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

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

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

如果你真的不能安装SCR或者依赖已经可用的SCR,那么你需要写一个BundleActivator。这通常仅对于非常低级别的 "plumbing" 类型的捆绑包,或者当 运行 在资源极度受限的设备上时才需要。