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, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content