【问题标题】:Spring framework download as OSGi bundles作为 OSGi 包的 Spring 框架下载
【发布时间】:2013-12-14 13:30:57
【问题描述】:

我正在为 OSGi 开发 Spring,也就是 Eclipse Gemini Blueprint。

我发现的每个教程或文档都提到将 Spring 提供的几个捆绑包添加到我的 OSGi 容器(如 org.springframework.aop.jar)。很难找到当前 Spring 版本的下载,因为它似乎不再直接在他们的主页上提供(只有 maven 链接等,这不是当前项目的选项)。特别是每个教程都提到,这个库也是作为 OSGi 包提供的。

此外,Spring 框架提供了许多需要作为依赖项安装的包。从 Spring Framework 2.5 版开始,Spring 发行版中包含的 Spring jar 是有效的 OSGi 包,可以直接安装到 OSGi 平台中。

来源:http://www.eclipse.org/gemini/blueprint/documentation/reference/1.0.2.RELEASE/html/app-deploy.html

但是我能找到的所有下载(例如http://maven.springframework.org/release/org/springframework/spring/3.2.5.RELEASE/)只包含普通的 jar,没有 OSGi 包。自 Spring 3.x 起,提供 OSGi 捆绑包的做法是否已停止?如何将必要的 Spring 依赖项添加到我的项目中?教程/文档是否已过时?

我正在使用最新版本的 Gemini 1.0.2。

【问题讨论】:

    标签: spring osgi eclipse-gemini


    【解决方案1】:

    您可以使用 Eclipse Maven 存储库

    <repositories>
    <repository>
        <id>gemini-blueprint</id>
        <name>Gemini Blueprint</name>
        <url>https://repo.eclipse.org/content/groups/gemini-blueprint/</url>
    </repository>
    </repositories>
    
    <dependencies>
    <dependency>
        <groupId>org.eclipse.gemini.blueprint</groupId>
        <artifactId>gemini-blueprint-extender</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
    </dependency>
    </dependencies>
    

    Blueprint Extender 的传递依赖将包含您需要的所有 Spring 内容。

    【讨论】:

    • 这个项目没有maven,我在问题中指定了。
    • 是的,但是您可以使用 Maven 来获取您需要的所有依赖项。只需创建一个额外的 maven 项目来下载所有依赖项,然后让 maven 将所有依赖项复制到您选择的目录中。然后,您就拥有了正确版本中所需的所有库。当我开始使用 Gemini Blueprint 时,我遇到了同样的问题,这是 imo 处理它的最简单方法。
    【解决方案2】:

    如果您需要 OSGi'ified Jars,我建议使用 springsource 企业捆绑存储库,该存储库位于:http://ebr.springsource.com/

    springsource ebr 不仅提供支持 osgi 的 spring-jars,它还提供了许多带有 osgi-Manifest.MF 文件的第三方 osgi 库。

    例如,它包含您在帖子中提到的 OSGi 兼容 Jar:http://ebr.springsource.com/repository/app/bundle/version/detail?name=org.springframework.aop&version=3.2.5.RELEASE&searchType=bundlesBySymbolicName&searchQuery=org.springframework.aop

    【讨论】:

      【解决方案3】:

      我对 Gemini Blueprint 有点怀疑。自从 VMware 接管 SpringSource 后,他们似乎几乎停止了对 OSGi 的努力。幸运的是,Apache Aries 有一个替代实现,它得到了 IBM 和其他一些公司的支持。

      您还应该看看Apache Karaf。它预先安装了蓝图,并允许轻松添加许多其他框架。我已经完成了一些教程,展示了如何将蓝图与 CXF、Camel、JPA 等多种技术结合使用。

      【讨论】:

      • 感谢双子座的提示,我会进一步研究它的未来。我的想法是,由于它现在是 Eclipse 基金会的一部分,它的未来应该相当稳定。我研究 Spring/Blueprint 的主要原因是依赖注入。任何框架都可以,只要它能够基于 Web 会话范围注入 bean(我正在构建一个 Web 应用程序并需要它来顺利处理多用户功能)。 Session Scope 不是官方蓝图规范的一部分(尽管 Gemini 提供了它)。 Apache Aries 怎么样?
      • 我还没用过示波器。据我所知,会话范围尚未在 aries 蓝图中实现,但我可能错了。顺便提一句。您可能想要研究的另一件事是 OSGi 上的 CDI。我目前正在为它准备一个教程。看起来很有希望。我已经有一个工作示例:github.com/cschneider/Karaf-Tutorial/tree/master/tasklist-cdi
      • 看起来确实很有希望,但我想一个没有任何公司或基金会支持的纯开源项目不是这个项目的选择(当然不评价你的努力)。我们必须坚持已建立的框架。我仍然感谢您的意见:)
      • Pax cdi 只是一个小的 OSGi 适配器。实际工作由 Apache OpenWebBeans 或 JBoss Weld 完成,具体取决于您的选择。所以背后有大组织。尽管如此,现在切换到它可能还为时过早。
      【解决方案4】:

      如果您关心的是 OSGi 框架中的简单依赖注入,我建议您同时查看 OSGi 声明式服务,例如 Felix 实现,尤其是与 Bndtools 结合使用,或者,如果您使用的是 PDE,DS annotations processor使通过注解执行依赖注入变得非常简单。总的来说,我发现这些解决方案比 Spring/Gemini/Blueprint 更轻量级且更易于使用。

      【讨论】:

      • 我会研究一下,但我希望的主要好处不是依赖注入,而是具有基于 Web 会话范围的 bean(以避免需要手动处理多吨)。这个范围当然适用于依赖注入 - 但并非每个依赖注入框架都提供基于会话范围注入 bean 的功能。
      • 对。我认为在这种情况下,DS 提供的功能可能还不够。
      猜你喜欢
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 2011-11-08
      • 2017-02-13
      • 2015-11-22
      • 2012-08-22
      • 2014-12-14
      相关资源
      最近更新 更多