Hi,

Normally this stack trace is caused by missing cxf-rt-transports-http-xxx.jar 
on the classpath.
Either the class HTTPTransportFactory.class or META-INF/cxf/bus-extensions.txt 
is not in your jar.

Out of curiosity: what is the reason to compose CXF and Spring in single jar 
using Maven Shade?

Regards,
Andrei.

> -----Original Message-----
> From: Aleksandar Vidakovic [mailto:[email protected]]
> Sent: Sonntag, 4. Mai 2014 01:04
> To: [email protected]
> Subject: Undertow + CXF + Spring single JAR
> 
> Hi,
> 
> ... I tried to package a CXF project with fairly standard WAR setup 
> (CXFServlet
> in web.xml configured) and some additional Spring configuration (nothing
> fancy) in a single JAR (with Maven Shade plugin).
> 
> 99% is working (Undertow is starting, Spring context gets initialized), but 
> CXF
> has a problem picking up a transport. I thought that it would just behave the
> same way like in a servlet container environment, but apparently something is
> missing.
> 
> This is the exception that I get:
> 
> [console]
> 
> Exception in thread "main"
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name
> 'org.apache.cxf.jaxrs.spring.JAXRSServerFactoryBeanDefinitionParser$SpringJA
> XRSServerFactoryBean---72839183':
> Invocation of init method failed; nested exception is
> org.apache.cxf.service.factory.ServiceConstructionException
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
> ory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
> ory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
> ory.createBean(AbstractAutowireCapableBeanFactory.java:475)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> AbstractBeanFactory.java:304)
>       at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSi
> ngleton(DefaultSingletonBeanRegistry.java:228)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(A
> bstractBeanFactory.java:300)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstr
> actBeanFactory.java:195)
>       at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInst
> antiateSingletons(DefaultListableBeanFactory.java:703)
>       at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFac
> toryInitialization(AbstractApplicationContext.java:760)
>       at
> org.springframework.context.support.AbstractApplicationContext.refresh(Abstr
> actApplicationContext.java:482)
>       at
> org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.jav
> a:151)
>       at
> org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74)
>       at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.
> java:76)
>       at
> io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(Manag
> edServlet.java:214)
>       at
> io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:1
> 19)
>       at
> io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerI
> mpl.java:501)
>       at com.hotlabuyo.rest.server.Main.main(Main.java:51)
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>       at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.j
> ava:205)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 62)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
> mpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:483)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
> ory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1681)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
> ory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1620)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
> ory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
>       ... 16 more
> Caused by: org.apache.cxf.BusException: No DestinationFactory was found for
> the namespacehttp://cxf.apache.org/transports/http.
>       at
> org.apache.cxf.bus.managers.DestinationFactoryManagerImpl.getDestinationF
> actory(DestinationFactoryManagerImpl.java:122)
>       at
> org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:79)
>       at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:63)
>       at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.j
> ava:160)
>       ... 23 more
> 
> [/console]
> 
> ... and the relevant piece of configuration for CXF looks like this:
> 
> [config]
> 
> ...
> 
>       <import resource="classpath:META-INF/cxf/cxf.xml" />
>       <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>       <import resource="classpath:META-INF/cxf/cxf-extension-*.xml" />
> 
> ...
> 
> [/config]
> 
> Did anyone try this setup already?
> 
> Any help with this would be much appreciated.
> 
> Thanks in advance and cheers,
> 
> Aleks

Reply via email to