Community
Participate
Working Groups
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
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).
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)
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.
Done