OSGi:有一种处理服务和注册的“最佳方式”吗?

时间:2011-07-12 11:20:19

标签: java osgi spring-dm

我正在与OSGi开始一个项目,我在定义处理服务注册等方式时面临一个非常重要的选择......

如果我没弄错的话,我有三个选择:

  • 通过实施服务监听器并处理我自己的寄存器(实际上可能不是最糟糕的选择)来使用手动解决方案
  • 使用声明式服务范例:看起来不错,但我觉得它现在有点不赞成了。我是对的吗?
  • 使用 Spring DM 范例:它似乎是最新的范例,但我不确定它是否已经很好地标准化了。我是否需要一个特殊的OSGi实现来运行它(比如 Virgo / SpringDM Server ?)或者我可以在它包含插件org.springframework.*后立即使用我的经典OSGi平台吗?

您对我的讯问有任何意见或信息吗?您是首选(以及为什么?)或者您是否使用了我的列表中未包含的其他解决方案?

非常感谢。

2 个答案:

答案 0 :(得分:2)

声明服务(DS)不被弃用,它们实际上是在OSGi中处理服务绑定/解除绑定的最简洁方法。您可以手动执行此操作,这可能会更好,具体取决于您的用例,但通常DS很好。 SpringDM在下面使用了Equinox,但是它们已经为你包装它以使某些东西更具弹性。我从未尝试过SpringDM,因此无法评论太多。

如果您计划将来使用/集成Spring,请从SpringDM开始。否则,从DS开始。如果您需要执行DS无法处理的操作,您可以使用服务跟踪器手动执行此操作。可以将DS和手动服务处理混合在一起。

我认为你有一个名为“蓝图”的第四个选项,在过去的两年中,它被提议作为DS的替代品。我不知道他们到了哪里,但我认为SpringDM可能会在内部使用它。

答案 1 :(得分:1)

除了@omerkudat建议外,您还可以查看比DS更先进的iPOJO,但它不是官方规范的一部分。