Web Service--java代码实现客户端编写---[小结]

前提:一些成熟软件产品,为了更好地可扩展性,产品供应者会在发布软件的同时发布和软件对应的Web Service服务,并编写有《二次开发接口用户手册》。后期在用户使用时,可以根据自己的实际需要,编写自己的客户端,实现不同的功能。

本人对Web Service技术并没有特别深入的了解,只是知道大致的原理--服务器端会提供一些可用的接口,客户端可以根据自己的实际需要,调用服务器端提供的这些接口而不必关心接口如何实现即可实现相应的功能。网络上有很多如何编写服务器端代码,如何发布服务,如何写客户端代码等,但是在实际编写过程中还是会遇到各种各样的问题,这里小编只是将自己在编写过程中遇到的问题总结汇总一下,一则复习备忘,二则也希望能给其他朋友提供一些帮助,大家互相切磋。

服务器端基于Apache Axis2,融合在应用软件组件中,作为独立Web服务发布平台发布。 应用软件安装成功后,web服务即已发布成功。现在根据实际需要,新增加一个功能。该功能即通过web service 客户端实现。

准备:开发环境:jdk 1.5+tomcat 6.5+axis2-1.4.1,开发工具:my eclipse 8.5。

开发:生成客户端代码。生成客户端代码的方法有很多种,ant、axis2、Java代码等都可以,按自己熟悉的方式进行。我是一种都不熟悉,采用了最简单的axis2,然后dos命令行的方式生成的。步骤如下:

1、到www.apache.org上去下载axis-bin-1_4.zip,如要关联源代码就把axis-src-1_4.zip也下载下来。

2、配置系统环境
JAVA_HOME  C:\Program Files\Java\jdk1.5.0

CLASSPATH  .;%JAVA_HOME%\bin;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%ANT_HOME%\lib

Path  ;%JAVA_HOME%\jre\bin;%AXIS2_HOME%/bin

AXIS2_HOMED:/tools/axis2-1.4.1

3、测试环境变量是否设置成功。打开命令提示符,输入命令:java 回车,如果出现如下界面,证明Java环境设置成功。


输入:axis2 回车,如果出现如下界面,则说明axis2环境设置成功



3、cmd命令生成客户端代码:wsdl2java -uri http://127.0.0.1/services/customQueryService?wsdl -p com.h3c.imc.clients -d adb  -u -o d:/02/

(①127.0.0.1是发布web服务的服务器地址。② http://127.0.0.1/services/customQueryService?wsdl是wsdl文件的路径,可以是本地路径也可以是网络路径。③-o 输出文件路径。④-d <databinding> : 指定databingding,例如,adb,xmlbean,jibx,jaxme and jaxbri 。⑤-u 展开data-binding的类)

4、创建Java web项目wstest,将Axis相关包文件复制到wstest项目的WEB-INF目录下。将第三步生成的Java代码复制到wstest项目的src目录下。

tip:如果此时代码提示错误,首先考虑是各jar包、jdk等的版本问题。

5、至此,客户端自动生成的代码基本就完成了,剩下的就是开发员自己调用接口了。当然,根据不同情况,有些需要简单写一个接口的实现类。这就要根据服务端的实际情况了,一般《二次开发接口用户手册》也会给提示。小编这边是需要先写一个操作员登录login(imcEndpointStr,sc)和操作员注销接口的实现。由于这个是根据用户手册抄的,这里就不再赘述。

这里是登录后查询操作的一个例子,供参考:

// 执行查询接入用户列表操作
Options opts = new Options();
opts.setTo(new EndpointReference(endPointStr));
opts.setAction("urn:queryAcmUserList");
opts.setManageSession(true);
sc.setOptions(opts);

// 设置查询接入用户列表参数,接口内的方法,根据实际情况调用
AcmUserServiceStub stub = new AcmUserServiceStub();//自动生成的接口调用
AcmUserListQueryParam queryInfo = new AcmUserListQueryParam();//自动生成的接口调用
queryInfo.setAccountName("airily");
queryInfo.setUserGroupId(-9999);
....
// 设置排序
queryInfo.setResultSortType(0);
queryInfo.setResultSort(3);
...

QueryAcmUserList queryAcmUserList = new QueryAcmUserList();//自动生成的接口
queryAcmUserList.setParam0(queryInfo);
OMElement element = stub.toOM(queryAcmUserList, true);//自动生成的接口调用

// 发送并接收消息
OMElement response1 = sc.sendReceive(element);
RetAcmUserList result = QueryAcmUserListResponse.Factory.parse(response1.getXMLStreamReaderWithoutCaching()).get_return();


Tips:开发环境版本的选择,我遇到的这个《二次开发接口用户手册》并没有提供版本,是一个个试出来的。一般在生成客户端阶段,会遇到各种错误,这是首先考虑的不是生成代码的问题,而是环境版本的问题,有时候一个jar包的版本不对,客户端代码就会有错误提示。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值