Spring DM与Spring 4的兼容性。*

时间:2014-11-27 15:03:43

标签: spring osgi

我继承的基于OSGi的应用程序使用org.springframework.osgi.extender包版本1.2.1。 目前,我使用的是Java 1.7和Spring 2.5.6。

我最近在我的机器上安装了Java 8,并且由于以下错误,org.springframework.osgi.extender软件包不再启动:

org.osgi.framework.BundleException: Activator start error in bundle org.springframework.osgi.extender [21].
        at org.apache.felix.framework.Felix.activateBundle(Felix.java:2196)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2064)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955)
        at org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:114)
        at org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:249)
        at org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:184)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Cannot create ConcurrentHashMap - neither JDK 1.5 nor backport-concurrent available on the classpath
        at org.springframework.core.CollectionFactory.createConcurrentMap(CollectionFactory.java:229)
        at org.springframework.osgi.extender.internal.activator.ContextLoaderListener.<init>(ContextLoaderListener.java:332)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4336)
        at org.apache.felix.framework.Felix.activateBundle(Felix.java:2141)
        ... 6 more
java.lang.IllegalStateException: Cannot create ConcurrentHashMap - neither JDK 1.5 nor backport-concurrent available on the classpath

我打算将Spring升级到4.0.3,但我注意到org.springframework.core.CollectionFactory.createConcurrentMap()方法已被弃用并删除。

Spring GS是否可以升级到Spring 4。*?

3 个答案:

答案 0 :(得分:2)

  

Spring GS是否可以升级到Spring 4。*?

没有。 Spring从4.0开始就停止支持OSGi,这是正确的决定。 Spring的概念不适合OSGi。

请参阅http://blog.osgi.org/2014/09/how-should-i-use-guicespringblueprint.html

答案 1 :(得分:0)

Spring DM移动了,现在是Gemini Blueprint:https://projects.eclipse.org/projects/rt.gemini.blueprint

来自参考:https://www.eclipse.org/gemini/blueprint/documentation/reference/1.0.2.RELEASE/html/eclipse-migration.html

  

2009年底,作为Gemini项目提案的成员,SpringSource   贡献了Spring Dynamic Modules(也称为Spring OSGi)项目   到Eclipse Foundation。 Spring DM v2代码库已被移至   Eclipse.org及其问题跟踪器和论坛。该项目成了   根据Apache许可证和EPL双重许可。虽然名字有   改变了,代码和它的功能保持不变。现有   Spring DM应用程序可以轻松迁移到Eclipse Gemini   迁移指南中提到的蓝图。而项目名称   已经改变(到Eclipse Gemini Blueprint)并做出了重大努力   是为了在项目文件和资源中反映这一点,   可能有一些我们错过的地方;如果你找到了,请   向我们报告。

您可以在Spring 3.2中使用Gemini Blueprint,不支持4.0,据我所知,它尚未计划用于Gemini Blueprint的2.0版本。

答案 2 :(得分:0)

正如旧帖中已经提到的,Spring DM现在是一个Eclipse项目,Gemini Blueprint:
https://www.eclipse.org/gemini/blueprint/

这是一个相关的论坛帖子,表明Spring 4的支持正在进行中:
https://www.eclipse.org/forums/index.php/t/642416/
快照可以在这里下载:
https://repo.eclipse.org/content/repositories/gemini-blueprint-snapshots

如果您正在寻找Spring 4 OSGi捆绑包,请继续Apache ServiceMix,并可在此处下载:
http://repo1.maven.org/maven2/org/apache/servicemix/bundles/