You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "Morein, Arnie" <Ar...@dps.texas.gov> on 2017/08/14 13:44:30 UTC

Spring 4.3.10 and Apache CXF 3.1.12 in WAR project, CXFServlet not starting

I am trying to get a few Soap services upgraded by moving them to a new WAR project with no UI, just services, and upgrading the various APIs in the process.

I am using Spring 4 with XML configuration. When I first deployed my test service, everything worked. The CXF Servlet URL (/services/*) registered along with my end points and the WSDL was returned.

Then I tried reconfiguring the project to use Spring's new Java Configuration, and things went wrong.

After nearly three full days of googling and trying different things, I've given up. I am back to XML configuration, but the problem persists: the CXF Servlet refuses to activate its root URL, so of course, none the end points are available either (despite the fact that they show up as registered in the log).

In my applicationContext.xml file, I have the expected references:

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

Followed by the endpoints:

    <jaxws:endpoint id="service1Endpoint" address="/service1"
        implementorClass="a.b.c.Service1Impl" />

    <jaxws:endpoint id="service2Endpoint" address="/service2"
        implementorClass="a.b.c.Service2Impl" />

I found the cxf.xml file and saw the bean declarations, in particular the one for SpringBus:

    <bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus" destroy-method="shutdown" />

But I was taken aback when I opened the cxf-servlet.xml file from the cxf-rt-transports-http-3.1.12.jar file to find a Spring XML configuration file - completely devoid of any bean declarations!

I checked in 3.1.10 and found the same thing. A further oddity was this namespace:

    xmlns:foo="http://cxf.apache.org/configuration/foo"

why would someone declare a namespace of foo but not one of bar? :) <jk> But it does give the impression of something that wasn't finished.

Then I looked in the cxf-rt-frontend-jaxws-3.1.12.jar file and found the cxf-extension-jaxws.xml file, which does have something related to a web server, a reference to:

org.apache.cxf.jaxws.context.WebServiceContextResourceResolver

So now I have this:

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxws.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

But still the servlet referenced in the web.xml file never seems to "start up":

Perhaps it might be due to the sparse nature of my web.xml:

    <servlet>
        <display-name>CXF Servlet</display-name>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

Any suggestion would be much appreciated.

RE: Spring 4.3.10 and Apache CXF 3.1.12 in WAR project, CXFServlet not starting

Posted by "Morein, Arnie" <Ar...@dps.texas.gov>.
Has no one got any ideas? Suggestions?

-----Original Message-----
From: Morein, Arnie [mailto:Arnold.Morein@dps.texas.gov] 
Sent: Monday, August 14, 2017 8:45 AM
To: users@cxf.apache.org
Subject: [EXTERNAL] Spring 4.3.10 and Apache CXF 3.1.12 in WAR project, CXFServlet not starting

I am trying to get a few Soap services upgraded by moving them to a new WAR project with no UI, just services, and upgrading the various APIs in the process.

I am using Spring 4 with XML configuration. When I first deployed my test service, everything worked. The CXF Servlet URL (/services/*) registered along with my end points and the WSDL was returned.

Then I tried reconfiguring the project to use Spring's new Java Configuration, and things went wrong.

After nearly three full days of googling and trying different things, I've given up. I am back to XML configuration, but the problem persists: the CXF Servlet refuses to activate its root URL, so of course, none the end points are available either (despite the fact that they show up as registered in the log).

In my applicationContext.xml file, I have the expected references:

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

Followed by the endpoints:

    <jaxws:endpoint id="service1Endpoint" address="/service1"
        implementorClass="a.b.c.Service1Impl" />

    <jaxws:endpoint id="service2Endpoint" address="/service2"
        implementorClass="a.b.c.Service2Impl" />

I found the cxf.xml file and saw the bean declarations, in particular the one for SpringBus:

    <bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus" destroy-method="shutdown" />

But I was taken aback when I opened the cxf-servlet.xml file from the cxf-rt-transports-http-3.1.12.jar file to find a Spring XML configuration file - completely devoid of any bean declarations!

I checked in 3.1.10 and found the same thing. A further oddity was this namespace:

    xmlns:foo="http://cxf.apache.org/configuration/foo"

why would someone declare a namespace of foo but not one of bar? :) <jk> But it does give the impression of something that wasn't finished.

Then I looked in the cxf-rt-frontend-jaxws-3.1.12.jar file and found the cxf-extension-jaxws.xml file, which does have something related to a web server, a reference to:

org.apache.cxf.jaxws.context.WebServiceContextResourceResolver

So now I have this:

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxws.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

But still the servlet referenced in the web.xml file never seems to "start up":

Perhaps it might be due to the sparse nature of my web.xml:

    <servlet>
        <display-name>CXF Servlet</display-name>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

Any suggestion would be much appreciated.