我在哪里可以找到 Spring 4 OSGi 包

Posted

技术标签:

【中文标题】我在哪里可以找到 Spring 4 OSGi 包【英文标题】:Where can I find Spring 4 OSGi bundles 【发布时间】:2014-02-06 12:04:53 【问题描述】:

在哪里可以找到 Spring 4 的 OSGi 包?我检查了http://ebr.springsource.com/,但只能找到 Spring 3.2.x 并且 Maven Central 中的工件不是捆绑包。

澄清

我不是在寻找 Spring DM 或类似的东西。我正在寻找作为 OSGi 包的“Spring 框架”JAR(spring-core、spring-beans、spring-context,...)。我不想在 OSGi 环境中创建应用程序上下文。我只需要 OSGi 环境中的(异常)类。

【问题讨论】:

这个帖子 theserverside.com/discussions/thread.tss?thread_id=71606 建议它不久前都移到了 eclipse.org/gemini。 我读它的方式是 Spring DM。这不是我要找的。我只是在寻找 spring-core、spring-context、spring-beans ...... OSGi 包。 好问题。我在这里找到了一个 repos 列表versioneye.com/java/org.springframework:spring-core/…。似乎在 3.2.5 之后捆绑包不存在。 那个 spring ebr repo 即将消失(查看常见问题解答)。我想你可以“osgify”你自己的包:) 只需创建一个带有 spring-core 依赖项的 POM,然后使用 bnd 插件 private-package 一切。 【参考方案1】:

Spring 源去年停止使用 OSGI 标头创建 jar: http://www.infoq.com/news/2012/10/spring-osgi-gradle/

我认为您不会获得包含 Spring 的 OSGI 捆绑包的官方 maven 存储库。我们经常将http://ebr.springsource.com/ 用于 OSGI 捆绑包,但即便如此,它也不包含 3.2 之后的任何版本

由于回购量少,无法添加为评论,因此添加为答案。

【讨论】:

无论捆绑包最终是否会出现在 EBR 中,官方的东西都会很好。【参考方案2】:

有点难找,这里是 OSGi 包的链接

http://docs.spring.io/downloads/nightly/release-download.php?project=OSGI

对于所有春季项目

http://docs.spring.io/downloads/nightly/release-download.php

【讨论】:

这些都不是我要找的库。我不是在寻找 Spring-OSGi,它包含的最新版本似乎是 3.1.4。【参考方案3】:

Spring 将支持任何进一步的版本作为 OSGi 捆绑包。 Spring 3.2.4 已停止官方支持(尽管您可以找到 3.2.5 工件here,与Eclipse Forum 中的声明相矛盾)

来自 Spring 来源的 Glyn Normington 承认,在多个地方,请参见此处:

on Twitter Eclipse Forum

不过,还是有希望的。在 Karaf - dev 列表中,可以看到他们打算在 ServiceMix 项目中支持 spring 库。整个线程中的详细信息见here。

【讨论】:

【参考方案4】:

我必须说,将 Spring 迁移到 OSGi 仍然存在于 Apache ServiceMix 中。 从 maven repo 获取最新的 (4.0.2.RELEASE) Spring 工件以及启用 OSGi 的清单

【讨论】:

这不再是真的。随着 Apache Servicemix 5.1.1 的发布,Spring 4.0.2.RELEASE osgi 包不再可用。 更新:Spring 4.0.5 版本再次回归 Servicemix 5.3.0【参考方案5】:

我发现 ServiceMix 提供了最高版本的 OSGi-fy Spring 包。 4.1.4, http://repo2.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.spring-aop/

我在我的 osgi Bundle 项目中尝试过,像这样设置依赖:

 <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.spring-core</artifactId>
        <version>4.1.1.RELEASE_3</version>
 </dependency>

在 Felix 中运行,发现 sprint 包已激活:

START LEVEL 1
 ID|State      |Level|Name
...
5|Resolved   |    1|Apache ServiceMix :: Bundles :: spring-expression (4.1.1.RELEASE_3)
6|Active     |    1|Apache Felix Gogo Command (0.14.0)
7|Active     |    1|Apache Felix Gogo Runtime (0.12.1)
8|Active     |    1|Apache Felix Gogo Shell (0.10.0)
...
10|Active     |    1|Apache ServiceMix :: Bundles :: spring-context (4.1.1.RELEASE_3)
11|Active     |    1|Apache ServiceMix :: Bundles :: spring-core (4.1.1.RELEASE_3)
.... 

但在最新版本 5.4.0 中,ServiceMix 仅包含 spring 3.2.11。

在我的 OSGi 环境中使用 spring 4.1.1 有什么风险吗?

【讨论】:

我发现了一个关于在 OSGi 环境中使用 Spring 的问题。Spring 无法加载嵌入在 spring bundle 中的架构 'springframework.org/schema/beans/spring-beans-4.0.xsd' 资源。在没有 Internet 连接的情况下创建 ClassPathXmlApplicationContext 时会发生 XmlBeanDefinitionStoreException。有没有怎么解决这个问题?

以上是关于我在哪里可以找到 Spring 4 OSGi 包的主要内容,如果未能解决你的问题,请参考以下文章

OSGI打安装包步骤(底包制作)

将 Akka 与 Spring 和 OSGI 集成(未找到密钥“akka”的配置设置)

我在哪里可以找到 Spring Boot 包的 SHA256/SHA512 哈希?

插件org.eclipse.osgi老是出现问题,是否这个包坏了,怎么办呢?

jdo/OSGi:捆绑更新后构建 JDO PersistenceManagerFactory 时出错

我在哪里可以找到包管理器窗口中执行的代码的控制台或调试输出?