javaweb-servicescxfjbossws

How to deploy JbossWS CXF within a web-application


When I deploy my webapplication on a JBoss app-server it fails to deploy the webservice. I am using the top-down approach and generated the necessary files with wsconsume.bat from my wsdl- and xsd-files. I then add necessary anottations to the webservice implementation-class. But this is pretty much as far as I get, the documentation in the user guides fails to describe how I should continue.

I have experimented with different settings in the jbossws-cxf.xml and web.xml. But webserive fails to deploy correctly.

Anyone could suggest some points or point me towards a reference implementation that describes my use case?


Solution

  • So I finally got it to work.

    The trick is to remove jbossws-cxf.xml-file. In web.xml there should be a servlet-mapping to the webservice implementation-class. Jbossws-cxf.xml-file is then automatically generated and stored in a tmp-directory. I advice to examine this file and then create the jbossws-cxf.xml so that customisation can be applied.

    In short this is how a configuration in it's simpliest form should look like:

    WEB-INF/web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
      <servlet-name>ws-name</servlet-name>
      <servlet-class>org.company.WebServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>ws-name</servlet-name>
      <url-pattern>/webservice/endpoint</url-pattern>
    </servlet-mapping>
    </web-app>
    

    WEB-INF/Jbossws-cxf.xml:

    <beans xmlns='http://www.springframework.org/schema/beans' 
            xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
            xmlns:beans='http://www.springframework.org/schema/beans' 
            xmlns:jaxws='http://cxf.apache.org/jaxws' 
            xmlns:soap='http://cxf.apache.org/bindings/soap' 
            xsi:schemaLocation='http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd 
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd'>
        <jaxws:endpoint id='ws-name' 
                address='http://127.0.0.1:8180/webservice/endpoint' 
                implementor='org.company.WebServiceImpl'>
            <jaxws:invoker>
                <bean class='org.jboss.wsf.stack.cxf.InvokerJSE'/>
            </jaxws:invoker>
        </jaxws:endpoint>
    </beans>