一、下载地址
http://archive.apache.org/dist/cxf/
二、环境配置
1、配置环境变量
新建 CXF_HOME 设置为自己的软件目录,如:D:\DevTools\apache-cxf-3.3.4
在 CLASSPATH 最后添加: %CSF_HOME%\lib
在 PATH中 最后添加: %CSF_HOME%\bin
2、验证:
操作 win+R ---> cmd ---> 回车 ---》 wsdl2java -v
三、wsdl2java 的使用
wsdl2java -encoding utf-8 -d D:\SvnRepository\Project-Reward\project-reward\reward-server\frame-zone\src\main\java -p com.gmcc.frame.webservice.newOrgServiceOld -autoNameResolution https://zylz.zjportal.net/WS/NewOrgServiceOld.asmx?wsdl
-encoding 是指定编码类型;
-d 指定生成目录
-p 指定包名
-all 生成服务端和客户端代码
-client 生成客户端代码
-server 生成服务端代码
四、使用 Spingboot 构建相关的配置类及测试方法
引入依赖包:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.3.4</version>
</dependency>
编写配置类:
@Configuration
public class ServiceSoapConfig {
@Bean
public NewOrgServiceSoap newOrgServiceSoap(){
return new NewOrgService().getNewOrgServiceSoap();
}
}
编写测试方法:
@RestController
public class Test {
@Autowired
private IpAddressSearchWebServiceSoap soap;
@GetMapping("/queryAllUserInfo")
public Object queryAllUserInfo() {
javax.xml.ws.Holder<CallResult> queryAllUserInfoResult = new Holder<>();
javax.xml.ws.Holder<QueryAllUserInfoOut> outParam = new Holder<>();
soap.queryAllUserInfo(
"XXX",
"XXX",
"XXX",
null,
queryAllUserInfoResult,
outParam
);
return outParam;
}
}
五、进行接口测试
http://127.0.0.1:29090/test-frame/queryAllUserInfo
六、常见问题处理
(1)undefined simple or complex type 'soapenc:Array'
wsdl的出错部分:
<s:schema targetNamespace="http://tempuri.org/AbstractTypes">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<s:complexType name="StringArray">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string"/>
</s:sequence>
</s:restriction>
</s:complexContent>
</s:complexType>
</s:schema>
这个时候,将其另存为 xml 文件,修改该段,增加 schemaLocation,如:
<s:schema targetNamespace="http://tempuri.org/AbstractTypes">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
<s:complexType name="StringArray">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string"/>
</s:sequence>
</s:restriction>
</s:complexContent>
</s:complexType>
</s:schema>
然后根据文件重新生成代码即可:
wsdl2java -encoding utf-8 -d D:\SvnRepository\Project-Swj\project-swj\gmcc-server\start-frame-single\src\main\java -p com.gmcc.frame.extra.zjportal.webservice.newSmsHelper -autoNameResolution E:\NewSmsHelper.xml
最后修改:2019-11-26 00:55:32
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

发表评论