WebService客户端开发(Axis2 1.5)
WebService的客户端开发方式很多,如果单纯为了使用一个WebService,而不想依赖太多的框架,那么随便选择个WebService框架就可以了。
为了封装方便,代码复用,更好的性能,一般选择客户端存根方式来开发。
开发环境:
Idea-8.13
Axis2-1.5
JDK-1.5
一、建立java项目
建立项目后,创建存根存放包。
按照如下图配置:
一定要选择ADB方式,ADB绑定方式生成的类最少,易于管理。
二、生成代码
按照如上图设置后,点OK,就生成好了,连单元测试的代码都封装好了。
说真的,生成后的代码直接看就傻眼了,看不出个头绪来。
三、看懂Axis2存根代码
Axis2生成的存根代码虽然复杂,但是有规律的,只要你搞明白生成的原理,再看生成后的代码,就会恍然大悟。
生成原理:
1、Axis将每个发布的服务生成一个对应的存根类,比如原来我的服务名为myws,那么生成后的存根就是MywsStub。
2、Axis将服务中每个方法生成一个存根下的内部类。
比如:
在服务端有这样的方法:public String doSomething(String taskname)
那么,生成的客户端中会有这样一个类:
MywsStub.DoSomething
这个类中还有自己的成员,成员即为原方法的参数。
四、封装客户端代码
一般来说,生成的WebService客户端代码都相当的乱,如果不懂规律,根本无法阅读。为了更好更方便更容易的调用WS服务,需要对客户端代码做进一步的封装。封装的点如下:
1、将存根中固定ip、端口改为变量。同时需要修改存根的构造方法。
2、构建一个和服务端对等的客户端类,并在其中的每个方法中再增加两个参数:ip和端口。
3、根据生成原理对客户端代码做更进一步封装。
4、发布客户端的jar。
按照以上的步骤,修改存根的构造方法。
并做进一步封装,封装代码如下:
/**
* WS客户端封装代码
*
* @author leizhimin 2009-8-5 13:10:23
*/
public class MywsClient {
public String doSomething(String taskname,String wsip,String port) throws Exception {
MywsStub stub = new MywsStub(wsip,port);
MywsStub.DoSomething opt = new MywsStub.DoSomething();
opt.setTaskname(taskname);
return stub.doSomething(opt).get_return();
}
public static
void main(String[] args)
throws Exception {
MywsClient client = new MywsClient();
String rs = client.doSomething( "xxx", "192.168.14.117",
"8080");
System.out.println(rs);
}
}
运行其中main测试方法如下:
xxxis finished!
Process finished with exit code 0
看看客户端测试截图:
看看服务端tomcat的响应:
到此,客户端开发过程就结束了。