NoClassDefFoundError for class WebApplicationContextUtils when CXFServlet is used from web.xml in Fuse

Solution Verified - Updated -

Issue

  • When installing a WAR OSGi bundle, which is an extract from one of our applications, the following error occurs:
2016-04-04 12:30:21,685 | WARN  [pool-8-thread-1 ] | AbstractLifeCycle                | FAILED HttpServiceContext{httpContext=WebAppHttpContext{wacu-testcase-frontend - 268}}: java.lang.NoClassDefFoundError: org/springframework/web/context/support/WebApplicationContextUtils
java.lang.NoClassDefFoundError: org/springframework/web/context/support/WebApplicationContextUtils
    at org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:54)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:76)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:532)
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)[86:org.eclipse.jetty.aggregate.jetty-all-server:8.1.18.v20150929]
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doStart(HttpServiceContext.java:222)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)[86:org.eclipse.jetty.aggregate.jetty-all-server:8.1.18.v20150929]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.start(JettyServerImpl.java:204)[93:org.ops4j.pax.web.pax-web-jetty:3.2.7]
    at org.ops4j.pax.web.service.internal.HttpServiceStarted.end(HttpServiceStarted.java:1032)[92:org.ops4j.pax.web.pax-web-runtime:3.2.7]
    at org.ops4j.pax.web.service.internal.HttpServiceProxy.end(HttpServiceProxy.java:422)[92:org.ops4j.pax.web.pax-web-runtime:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.end(RegisterWebAppVisitorWC.java:341)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:678)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.register(WebAppPublisher.java:237)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.addingService(WebAppPublisher.java:182)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.addingService(WebAppPublisher.java:135)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)[karaf.jar:2.4.0.redhat-621090]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)[karaf.jar:2.4.0.redhat-621090]
    at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)[karaf.jar:2.4.0.redhat-621090]
    at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)[karaf.jar:2.4.0.redhat-621090]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)[karaf.jar:2.4.0.redhat-621090]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)[karaf.jar:2.4.0.redhat-621090]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher.publish(WebAppPublisher.java:101)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.WebObserver.deploy(WebObserver.java:213)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.WebObserver$1.doStart(WebObserver.java:175)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.extender.SimpleExtension.start(SimpleExtension.java:58)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender$1.run(AbstractExtender.java:266)[244:org.ops4j.pax.web.pax-web-extender-war:3.2.7]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_71]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_71]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_71]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_71]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_71]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_71]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
Caused by: java.lang.ClassNotFoundException: org.springframework.web.context.support.WebApplicationContextUtils not found by org.apache.cxf.cxf-rt-transports-http [96]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)[org.apache.felix.framework-4.4.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)[org.apache.felix.framework-4.4.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)[org.apache.felix.framework-4.4.1.jar:]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_71]
    ... 36 more


  • The Apache CXF Runtime HTTP Transport (96) has Import-Package as org.springframework.web.context.support;resolution:=optional;version="[3.1,5)", while Apache ServiceMix :: Bundles :: spring-web (265) has Export-Package as org.springframework.web.context.support version=3.2.12.RELEASE.
  • The bundle is installed which uses feature spring-dm-web.
  • It seems to be triggered from including CXFServlet in web.xml - simply removing that servlet from web.xml makes it come up correctly during installation.

Environment

  • Red Hat JBoss Fuse
    • 6.2.1
  • spring-dm-web

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.