我正在一个项目中利用Apache cxf 3.x来实现一个肥皂客户端,该客户端最初是在Axis 1.4上开发的。该项目使用wsdl2java轴从发布的wsdl生成所有Java soap存根。当我在同一wsdl上应用cxf wsdl2java并期望生成相同的肥皂存根集时,我开始意识到随着许多方法的改变,CXF中新生成的存根变得不兼容。我真的很感谢任何建议,可以帮助我将逻辑重新路由到CXF上的新服务客户端。
大多数肥皂棒都非常相似。但是,看起来CXF方法缺少上层用来配置服务的端点和IP地址的密钥类。假设服务的名称为Sample。有一个名为SampleLocator.java的方法,它是由wsdl2java轴生成的。应用CXF wsdl2java时不再存在。该SampleLocator类是从axis.client.service扩展的,并且是通过axis方法上的Sample接口实现的。但是,相反,CXF方法仅生成扩展了javax.xml.ws.service的Sample类。
以下是一些片段,以显示差异, 在Axis上,以下方法已发布在生成的SampleLocator.java中,
getSample,
getServiceName,
getPorts,
setEndpointAddress, etc
在CXF上,以下方法已发布在生成的Sample.java中,
getSample, etc.
示例wsdl文件也附在下面以供参考(部分),
<service name="Sample">
<port name="Sample" binding="tns:Sample">
<SOAP:address location="http://localhost:80"/>
</port>
</service>