【问题标题】:OSGi activation method fallbackOSGi 激活方法回退
【发布时间】:2016-04-12 06:39:18
【问题描述】:

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

【问题讨论】:

  • 如果没有安装蓝图怎么办?
  • 寻找激活剂还是放弃? :)
  • 因此,如果您担心要再安装一个捆绑包 (SCR),那么只需写一个 BundleActivator。但这是一个奇怪的问题。
  • 实际上,原因是我正在编写一组需要安装在多个应用服务器上的捆绑包,我无法控制。我喜欢声明式服务,以及它们带来的灵活性和易用性,但是我无法在需要安装的任何地方使用它们,而且我不能只安装它。所以我一直在寻找一种中间的做事方式,可以说这绝不是一个好主意:)

标签: osgi blueprint-osgi declarative-services


【解决方案1】:

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

如果您确实无法安装 SCR 或依赖 SCR 已经可用,那么您需要写一个BundleActivator。这通常仅对非常低级的“管道”类型的捆绑包或在资源极度受限的设备上运行时才需要。

【讨论】:

  • 好的,所以在我的情况下,我不能只安装额外的捆绑包,我需要寻找最小的公分母?好吧,这就是我接下来要做的。谢谢:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2019-08-31
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2019-05-08
    • 2018-04-22
    • 2014-04-26
    相关资源
    最近更新 更多