是否可以在Karaf 2.3上使用Spring 3.1而不必担心破坏任何东西?
答案 0 :(得分:2)
我在这个问题上有点挣扎。基本上我们使用的是Camel 2.10.1,Spring Integration 2.1.3.RELEASE(是的,我知道两个集成框架),我们使用的是Spring 3.1.2.RELEASE,activemq 5.7.0和Karaf 2.3.0。正如克劳斯对OSGi说的那样,总是令人担忧,特别是当你无法控制
时我们也使用Spring DM,因此你基本上有三种版本的Spring 3.0,3.1和2.5.6。您最终可以安装三个版本的spring-core,例如通过传递依赖性解析或其他方式,并且根据启动顺序等,您可以运行令人讨厌的“使用”约束,这些约束总是很痛苦,有时候不那么容易解决。
我们最终做的是与Karaf对齐并抛弃Spring 3.1.2.RELEASE而支持3.0.7,这在我们的情况下很容易,因为3.0.7很好。
总的来说,我发现与容器提供的开箱即用的对齐是处理依赖关系的合理策略。
答案 1 :(得分:1)
使用OSGi总是有一个担忧:(
Camel支持Spring 3.0和3.1。所以从Camel的角度来看你应该没问题。使用Spring 3.0.7,Karaf开箱即用,您需要重新配置Karaf以使用Spring 3.1.x.
恕我直言,这是错误的(例如,Karaf暴露出Spring 3.0.7开箱即用),因为我认为Karaf不应该强迫用户使用特定的Spring版本。但是让最终用户自由选择他们想要使用的Spring。甚至将Spring 3.0,3.1和3.2并排运行,部署在容器中的应用程序也需要。或者至少Karaf应该恕我直言,更容易选择暴露/使用开箱即用的版本。
有关此问题的Karaf @dev邮件列表有讨论,以及如何解决此问题。 http://karaf.922171.n3.nabble.com/Apache-Karaf-2-3-0-very-close-tp4026295.html 和这里 http://karaf.922171.n3.nabble.com/Re-3rd-Party-Feature-Definitions-tp4026366.html
当Karaf团队在那里上市时,在这些邮件列表上提高你的声音!
答案 2 :(得分:1)
有一个Spring31功能可用于Karaf 2.3.0。 将它作为可选功能提供它可能看起来次优,但现在std。有关2.3.0系列弹簧的特性是弹簧3.0.x功能。 对于Out-Of-The-Box支持,您需要等待一下Karaf 3.0