You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Albert Toke <al...@muso.com> on 2016/06/22 11:46:33 UTC

Upgrade CXF from version 2.2.3 to 3.1.6 with Aegis data binding

Greetings,

Im currently working on upgrading a Spring MVC web project to Java 8 and Spring 4.2 on a Tomcat 7 server, where we also use CXF 2.2.3 with Aegis data binding for our SOAP messages. As far as I’ve understood from the different forum posts, this system upgrade requires a CXF upgrade to a newer version (3.1.x) also. 

Unfortunately after completing the process and switching out the dependencies I’m currently getting a NullPointerException at startup, more precisely at the JaxWsProxyFactoryBean.getConfiguredName (see stack trace below).

Caused by: java.lang.NullPointerException
	at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.getConfiguredName(JaxWsProxyFactoryBean.java:77)
	at org.apache.cxf.frontend.ClientProxyFactoryBean.configureObject(ClientProxyFactoryBean.java:103)
	at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:133)
	at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
	... 24 more

Used the following maven dependencies:

	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-core</artifactId>
	    <version>${cxfVersion}</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-bindings-soap</artifactId>
	    <version>${cxfVersion}</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-frontend-jaxws</artifactId>
	    <version>${cxfVersion}</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-transports-http</artifactId>
	    <version>${cxfVersion}</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-databinding-aegis</artifactId>
	    <version>${cxfVersion}</version>
	</dependency>

Where ${cxfVersion} is 3.1.6.

Finally the spring configuration 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:jee="http://www.springframework.org/schema/jee"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
			http://cxf.apache.org/jaxws 
			http://cxf.apache.org/schemas/jaxws.xsd
			http://code.lds.org/schema/spring/ws 
			http://code.lds.org/schema/spring/ws/stack-ws-2.2.xsd">

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

	<!-- Configure CXF to use Aegis data binding instead of JAXB -->
    <bean id="aegisBean"
          class="org.apache.cxf.aegis.databinding.AegisDatabinding"
          scope="prototype"/>
    <bean id="jaxwsAndAegisServiceFactory"
          class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
          scope="prototype"> 
        <property name="dataBinding" ref="aegisBean"/>
        <property name="serviceConfigurations">
          <list>
            <bean class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
            <bean class="org.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration"/>
            <bean class="org.apache.cxf.wsdl.service.factory.DefaultServiceConfiguration"/> 
          </list>
        </property>
    </bean>

    <!-- Factory to create the dynamic proxy -->
    <bean id=“webServiceFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass" value=“<service_class>"/>
        <property name="address" value=“<address>"/>
        <property name="username" value=“<username>" />
        <property name="password" value=“<password>" />
        <property name="serviceFactory" ref="jaxwsAndAegisServiceFactory"/>
    </bean>
    
    <!-- Web service dynamic proxy -->
    <bean id=“myWebService"
          class=“<class_location>"
          factory-bean="webServiceFactory"
          factory-method="create”/>
</beans>

I’m convinced that the problem comes from the xml configuration, but I didn’t find any examples for the new version (3.x).

Any help would be much appreciated.

Best regards,
Albert