You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Seshayya Murali <sk...@hotmail.com> on 2018/03/14 15:44:15 UTC

cxf 3.2.2 jax-ws not working

Java 1.8, apache tomcat 8 and cxf 3.2.2  not working.  Do not put code which are not working.

It is a pain to developers


cxf version used  3.2.2
All cxf version lib were used in WEB-INF\lib folder



13-Mar-2018 21:38:20.806 WARNING [localhost-startStop-1] org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl.startup Could not start WS-Discovery Service.
 javax.xml.ws.WebServiceException: java.lang.NullPointerException
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:375)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:255)
at org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl.startup(WSDiscoveryServiceImpl.java:259)
at org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl.serverStarted(WSDiscoveryServiceImpl.java:154)
at org.apache.cxf.ws.discovery.listeners.WSDiscoveryServerListener.startServer(WSDiscoveryServerListener.java:73)
at org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl.startServer(ServerLifeCycleManagerImpl.java:61)
at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:137)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:224)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
at org.apache.cxf.jaxws.spring.NamespaceHandler$SpringServerFactoryBean.create(NamespaceHandler.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


--------------------------apache-cxf-services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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-4.2.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    <jaxws:server id="jaxwsService" serviceClass="demo.hw.server.HelloWorld" address="/hello_world">
        <jaxws:serviceBean>
            <bean class="demo.hw.server.HelloWorldImpl"/>
        </jaxws:serviceBean>
    </jaxws:server>
</beans>

---------------------------web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee           http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>cxf</display-name>
    <servlet>
        <description>Apache CXF Endpoint</description>
        <display-name>cxf</display-name>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>
</web-app>
----------------------------------

--------------------------apache cxf 3.2.2 version samples code
package demo.hw.server;
import java.util.Map;
import javax.jws.WebService;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
@WebService(name="HelloWorld")
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)
public interface HelloWorld {
    String sayHi(String text);
    String sayHiToUser(User user);
    @XmlJavaTypeAdapter(IntegerUserMapAdapter.class)
    Map<Integer, User> getUsers();
}

package demo.hw.server;

import java.util.LinkedHashMap;
import java.util.Map;
import javax.jws.WebService;
@WebService(serviceName = "HelloWorld", endpointInterface = "demo.hw.server.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
    Map<Integer, User> users = new LinkedHashMap<Integer, User>();
    public String sayHi(String text) {
        System.out.println("sayHi called");
        return "Hello " + text;
    }
    public String sayHiToUser(User user) {
        System.out.println("sayHiToUser called");
        users.put(users.size() + 1, user);
        return "Hello "  + user.getName();
    }
    public Map<Integer, User> getUsers() {
        System.out.println("getUsers called");
        return users;
    }
}
// END SNIPPET: service










"Talent isdev@cxf.apache.org God-given; be humble. Fame is man-given; be thankful. Conceit is self-given; be careful."

Re: cxf 3.2.2 jax-ws not working

Posted by Daniel Kulp <dk...@apache.org>.
This is not enough information to be useful.     

The javax.xml.ws.WebServiceException has a NullPointerException as the cause, but you are not including the stack trace for that.   That’s the import part as knowing where the NPE occurred may help narrow it down.

You also don’t list which CXF jars are in the WEB-INF\lib folder.    My gut feeling is there is one missing, but without the stack trace or list, I really have no idea.   

That said, if you aren’t use WSDiscovery, remove the cxf-services-ws-discovery* jars from the WEB-INF\lib.   


Dan




> On Mar 14, 2018, at 11:44 AM, Seshayya Murali <sk...@hotmail.com> wrote:
> 
> Java 1.8, apache tomcat 8 and cxf 3.2.2  not working.  Do not put code which are not working.
> 
> It is a pain to developers
> 
> 
> cxf version used  3.2.2
> All cxf version lib were used in WEB-INF\lib folder
> 
> 
> 
> 13-Mar-2018 21:38:20.806 WARNING [localhost-startStop-1] org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl.startup Could not start WS-Discovery Service.
> javax.xml.ws.WebServiceException: java.lang.NullPointerException
> at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:375)
> at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:255)
> at org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl.startup(WSDiscoveryServiceImpl.java:259)
> at org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl.serverStarted(WSDiscoveryServiceImpl.java:154)
> at org.apache.cxf.ws.discovery.listeners.WSDiscoveryServerListener.startServer(WSDiscoveryServerListener.java:73)
> at org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl.startServer(ServerLifeCycleManagerImpl.java:61)
> at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:137)
> at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:224)
> at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
> at org.apache.cxf.jaxws.spring.NamespaceHandler$SpringServerFactoryBean.create(NamespaceHandler.java:60)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 
> 
> --------------------------apache-cxf-services.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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-4.2.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
>    <jaxws:server id="jaxwsService" serviceClass="demo.hw.server.HelloWorld" address="/hello_world">
>        <jaxws:serviceBean>
>            <bean class="demo.hw.server.HelloWorldImpl"/>
>        </jaxws:serviceBean>
>    </jaxws:server>
> </beans>
> 
> ---------------------------web.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee           http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>    <display-name>cxf</display-name>
>    <servlet>
>        <description>Apache CXF Endpoint</description>
>        <display-name>cxf</display-name>
>        <servlet-name>cxf</servlet-name>
>        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
>        <load-on-startup>1</load-on-startup>
>    </servlet>
>    <servlet-mapping>
>        <servlet-name>cxf</servlet-name>
>        <url-pattern>/services/*</url-pattern>
>    </servlet-mapping>
>    <session-config>
>        <session-timeout>60</session-timeout>
>    </session-config>
> </web-app>
> ----------------------------------
> 
> --------------------------apache cxf 3.2.2 version samples code
> package demo.hw.server;
> import java.util.Map;
> import javax.jws.WebService;
> import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
> import javax.jws.soap.SOAPBinding.Style;
> import javax.jws.soap.SOAPBinding.Use;
> @WebService(name="HelloWorld")
> @SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)
> public interface HelloWorld {
>    String sayHi(String text);
>    String sayHiToUser(User user);
>    @XmlJavaTypeAdapter(IntegerUserMapAdapter.class)
>    Map<Integer, User> getUsers();
> }
> 
> package demo.hw.server;
> 
> import java.util.LinkedHashMap;
> import java.util.Map;
> import javax.jws.WebService;
> @WebService(serviceName = "HelloWorld", endpointInterface = "demo.hw.server.HelloWorld")
> public class HelloWorldImpl implements HelloWorld {
>    Map<Integer, User> users = new LinkedHashMap<Integer, User>();
>    public String sayHi(String text) {
>        System.out.println("sayHi called");
>        return "Hello " + text;
>    }
>    public String sayHiToUser(User user) {
>        System.out.println("sayHiToUser called");
>        users.put(users.size() + 1, user);
>        return "Hello "  + user.getName();
>    }
>    public Map<Integer, User> getUsers() {
>        System.out.println("getUsers called");
>        return users;
>    }
> }
> // END SNIPPET: service
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> "Talent isdev@cxf.apache.org God-given; be humble. Fame is man-given; be thankful. Conceit is self-given; be careful."

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com