Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 357102

Summary: Update to Spring 3.1.0.RELEASE
Product: [RT] Virgo Reporter: Jean-Pierre Bergamin <james>
Component: runtimeAssignee: Chris Frost <eclipse>
Status: CLOSED FIXED QA Contact:
Severity: enhancement    
Priority: P3 CC: eclipse, glyn.normington, milesg78
Version: unspecified   
Target Milestone: 3.6.0.M01   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on: 378470    
Bug Blocks: 385304    

Description Jean-Pierre Bergamin CLA 2011-09-08 10:53:44 EDT
Build Identifier: 

There are already some libs in the wild that have Spring 3.0.6.RELEASE as dependency.

It would be nice to see the spring version 3.0.6.RELEASE bundled with virgo.

Reproducible: Always
Comment 1 Glyn Normington CLA 2011-09-12 20:52:13 EDT
We are unlikely to implement this enhancement as the approach to upgrading to 3.0.x is that users can do it themselves. Please see the FAQ.

However, let's leave this bug on the books for now and when we get towards Virgo 3.5 we can consider it (unless we have upgraded to Spring 3.1.x by then).
Comment 2 Chris Frost CLA 2012-01-18 11:57:41 EST
Upgrading to Spring 3.1.0

After some changes to the Kernel that is building with all tests passing. See branch 357102-SpringUpgrade, this needs to be merged in.

The web layer has deeper problems. The class org.springframework.web.SpringServletContainerInitializer is new in 3.1.0, does not exist in 3.0.5. When one of the integration tests tries to deploy a simple war file, it falls over with the following stack trace in the logs.

[2012-01-18 16:02:07.496] ServiceListener@2d7349d7 Bundle core_taglibs_root_context_path_0.0.0, BundleEvent STARTED 
[2012-01-18 16:02:07.496] start-signalling-2       Thread context class loader 'org.eclipse.core.runtime.internal.adaptor.ContextFinder@1fb9d335' pushed and set to 'KernelBundleClassLoader: [bundle=core_taglibs_root_context_path_0.0.0]' 
[2012-01-18 16:02:07.498] start-signalling-2       Starting web bundle 'core_taglibs_root_context_path' version '0.0.0' with context path '/'. 
[2012-01-18 16:02:07.499] start-signalling-2       Starting web bundle 'core_taglibs_root_context_path' version '0.0.0' with context path '/'. 
[2012-01-18 16:02:07.790] start-signalling-2       The ServletContentInitializer [org.springframework.web.SpringServletContainerInitializer] could not be created java.lang.ClassNotFoundException: org.springframework.web.SpringServletContainerInitializer
	at org.eclipse.gemini.web.tomcat.internal.loading.BundleWebappClassLoader.loadClass(BundleWebappClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1543)
	at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1466)
	at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1285)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:896)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:322)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
	at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:122)
	at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:91)
	at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122)
	at org.eclipse.virgo.kernel.install.artifact.internal.StandardArtifactStateMonitor.onStarted(StandardArtifactStateMonitor.java:253)
	at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:307)
	at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:304)
	at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:240)
	at org.eclipse.virgo.kernel.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:143)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Comment 3 Chris Frost CLA 2012-08-20 13:11:14 EDT
When this is done we could also remove the support for Spring Instrumented from the KernelBundleClassloader. Instrumented Spring hasn't been available for a long time and only available up to 3.0.5 if your a paying customer of SpringSource. I have also confirmed that instrumented Spring 3.0.5 is not forward compatible with Spring 3.1.x. 

If this is to be done, another bug should be raised.
Comment 4 Chris Frost CLA 2012-09-12 13:46:58 EDT
Done