java - OSGi : Is there a 'best way' to handle service and registers?

标签 java osgi spring-dm

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

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

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

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

非常感谢。

最佳答案

声明式服务 (DS) 并未被弃用,它们实际上是 OSGi 中处理服务绑定(bind)/解除绑定(bind)的最干净的方式。您可以手动完成,这可能会更好,具体取决于您的用例,但通常 DS 很好。 SpringDM 在底层使用 Equinox,但他们已经为您包装了它以使某些东西更具弹性。我从未尝试过 SpringDM,所以不能发表太多评论。

如果您计划在将来使用/集成 Spring,请从 SpringDM 开始。否则,从 DS 开始。如果您需要做一些 DS 无法处理的事情,您可以使用服务跟踪器手动完成。混合 DS 和人工服务处理是可以接受的。

我认为您有第四个选项,称为“Blueprint”,它在过去 2 年的某个时候被提议作为 DS 的替代方案。我不知道他们去了哪里,但我认为 SpringDM 可能在内部使用它。

关于java - OSGi : Is there a 'best way' to handle service and registers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663397/

相关文章:

java - 在 tomcat 中部署 java web 应用程序的 JSP 问题

java - 找不到扩展 CordovaActivity 的 Java 文件。当使用 "cordova build"

tomcat - 分派(dispatch)/转发到一个 servlet,该 servlet 提供来自不同包的静态内容

java - 运行 JUNIT 测试用例时无法加载 ApplicationContext

java - Eclipse Virgo 中的 OSGI 服务绑定(bind)器

java - 我如何在 OSGi 包中使用 Spring bean?

java - 如何直接从 Maven 存储库下载包含所有依赖项的 jar?

java - 如何使用正则表达式删除文件中的重复单词(单词不连续)?

java - AEM/CQ5 多个 bundle 相同的包名称和不同的数据类型属性

java - 无法将资源从主机应用程序导出到 OSGi