【注】只讲步骤不谈原理
【注】本文介绍如何通过WSDL文件快速对接甲方SOAP协议接口
【注】访问甲方的WSDL接口和甲方访问我们的WSDL接口通常来说数据格式不同,是两个不同的WSDL
使用WSDL文件/路径生成客户端
-
在菜单栏-Tools-WebServices-Generate Java Code From Wsdl…不同版本的IDEA的位置可能不一样。
Web service WSDL URL
填入wsdl地址或者本地文件路径
Output path
分别是生成的JAVA文件存储的位置和包名
Output mode
客户端选择client
,服务端选择server
其他的默认即可。
-
IDEA会在指定的包下生成JAVA文件:
-
调用实例:
URL url = new URL(serviceUrl);//对方WSDL接口地址
CSPRequestService service = new CSPRequestServiceLocator();
CtmsSoapBindingStub ctms = new CtmsSoapBindingStub(url, service);
CSPResult execCmd = ctms.execCmd(cspId, lspId, correlateId, cmdFileURL);//调用对方WSDL需要提供的参数,根据WSDL文件自动生成
result = execCmd.getResult();//根据WSDL文件自动生成,不同的WSDL文件返回值格式不同,获取返回值方法可能不同
String e = execCmd.getErrorDescription();//根据WSDL文件自动生成,不同的WSDL文件返回值格式不同,获取返回值方法可能不同
使用WSDL文件/路径生成服务端
甲方会以固定格式向我们发送数据,所以我们的服务端也要按照甲方的数据格式来,需要用甲方的WSDL格式来生成服务端。
-
生成JAVA代码步骤同生成客户端步骤1,
Output mode
服务端选择server
。
记得修改包名,放在不同的包下。
服务端会比客户端多deploy.wsdd
、undeploy.wsdd
,以及在WEB-INFO
下生成一个server-config.wsdd
-
将
deploy.wsdd
中deployment
下的service
节点内的代码直接拷贝,添加到server-config.wsdd
的deployment
节点下面:
【注意】services
的name
表示开放的接口名,WSDL文件中申明了会访问哪个接口,由IDEA自动生成。 -
在
*SoapBindingImpl.java
中处理逻辑,服务端被访问时会调用该类。 -
配置
web.xml