Hi, I have ported all of our XFire services/clients to CXF and only have 1
outstanding issue that is preventing any old XFire clients from working with
the new CXF service.  Our old XFire clients seem to send non-named
parameters (in0, in1) like so:

 

<soap:Body><ns1:ping
xmlns:ns1="http://service.realtyserver.com";><ns1:in0>testValue</ns1:in0></ns
1:ping></soap:Body>

 

Whereas the WSDL has the 'in0' parameter named as 'board'.  This causes the
parameter to be NULL when received.  The new CXF client correctly sends like
so:

 

<soap:Body><ns1:ping
xmlns:ns1="http://service.realtyserver.com/";><board>testValue</board></ns1:p
ing></soap:Body>

 

The missing slash was also a problem, but that has been resolved since if I
manually change the XFire request in0 -> board, and resend the request it
works.  So I just need to figure out the parameter problem.

 

I would really like to make this backwards compatible for the old XFire
clients at least for a few months while we make the transition.  Is there
any workaround for this?

 

I am using XFire 1.2.6 (was using simple frontend and aegis) and CXF 2.1.4
(with jaxws and aegis).  All using tomcat with spring server config.

 

I have tried the simple frontend and now am trying the jaxws frontend with
annotated web services to name the parameters using @WebParam since the
simple frontend was causing the CXF client to send parameters as arg0, arg1
etc.  Here are the relevant files:

 

@WebService

public interface IAuthService {

                public boolean ping(@WebParam(name="board") String board);

}

 

@WebService(endpointInterface="com.realtyserver.service.IAuthService",
serviceName="AuthService")

public class AuthService implements IAuthService {

                public boolean ping(String board) {

                                return true;

                }

}

 

cxf.xml

--------

 

<bean id="aegisBean"
class="org.apache.cxf.aegis.databinding.AegisDatabinding"
scope="prototype"/> 

 

<bean id="jaxws-and-aegis-service-factory"

 
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.XFireCompatibilityServiceConfigurati
on"/>

                                                <bean
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/> 

                                </list>

                </property>

</bean>

 

<bean id="AuthServiceImpl" class="serviceImpl.AuthService"/>

 

<jaxws:endpoint id="AuthServceEndpoint" address="/AuthService"
implementor="#AuthServiceImpl">

                <jaxws:serviceFactory>

                                <ref bean="jaxws-and-aegis-service-factory"
/>

                </jaxws:serviceFactory>

</jaxws:endpoint>

 

Thanks for any help.  

Kevin

 

Reply via email to