6中方式实现soap webservice客户端(源码)

闲话休谈,6中实现方式如下: wsdl2java方式,axis1, axis2 document, axis2 RPC, apache soap, javax.

源代码附件:https://files.cnblogs.com/files/surprizeFuture/soapwebservice.zip

***具体实现已经以源码方式上传,需要下载附件才能参考(只有12k),以下文章是对附件项目的一些说明和总结,方便大家阅读项目***

一. wsdl2java , 这个大家应该很熟悉,不用多说了。

二. 其他5种方式都是以Java编码的方式,基本都不超过50行代码,具体实现请参考附件工程soapwebservice,是个maven项目,导入非常方便

背景:项目关联的服务端是一个短信平台提供的发短信的webService,由于是我们公司内网,wsdl这里没有提供,但相应的我把相关的wsdl信息整理到了
项目中的“send3SM.xml”文件,可以当作是wsdl,因此不会影响到大家读源代码,代码中有写输入输出参数名的硬编码,请对照send3SM.xml,
自己实现时请替换。 对于webservice,我亦是新手,5种实现方式都是搜集和参考网上已有的分享,本次分享也是当作一个多途径客户端生成技术的整理而已。

本项目,服务端是相对较旧的axis1,但尚可实现除wsdl2java外的5种方式,此外据我了解纯粹用Java拼接xml的方式甚至cxf框架也可以实现
对axis1的service的访问。那对于目前比较主流的axis2,cxf等作为服务端,除这5中方式应当也适应外,还可以写的更加灵活。

>>>项目文件介绍

1.classPath:send3SM.xml: sms服务的send3SM方法的相关wsdl信息,它本身并不是有效的wsdl,只是为了方便大家对照代码

2.classPath: com.csair.npsdemo.soapwebservice : 该package下是5中访问服务端的客户端代码实现
a. Param.java: sms服务的send3SM方法所需要的参数
b. SendMsgbyAxis.java: axis1框架调用服务端的代码实现
c. SendMsgbyAxis2document.java: axis2的document方式调用服务端的代码实现
d. SendMsgbyAxis2RPC.java: axis2的RPC方式调用服务的代码实现
e. SendMsgbyJavax.java: 基于javax工具类调用axis1服务的代码实现
f. SendMsgbySoap.java: 基于apache soap工具调用axis1服务的代码实现
g. ServiceInfo.java: webService的地址信息等

3.项目的pom.xml: 对于每种技术/组件的客户端所需要的最小包的说明。

三. 总结:

1. 对于服务端和客户端技术/框架匹配问题, 必须清晰一点: webservice的设计的初衷就是服务能在各种场景下被使用,所以用户
对服务的使用只依赖于服务实现的协议,而非其方式。
2. 在做这个之前,我一直认为要使用webservce则必须生成一个很重的客户端包的。 目前我们的项目也是这么实施的(wsdl2java方式)
这种方式的缺陷远大于好处,列2点:误导新人,严重影响技术和原理学习; 生成的客户端太肥,如有100个方法的服务,你只用到1个,wsdl2java
生成的客户端则有99%的代码用不到。

posted on 2015-09-06 10:28  benzero  阅读(1819)  评论(0)    收藏  举报