关于WebService是什么、原理的文章有很多,此处不赘述。本文主要记录在服务器端发布WebService服务的方式,以及在客户端(异构的客户端平台)对该服务的调用。
本文的测试环境为:服务器平台CentOS5.4,Web服务器选择Tomcat6.0.29,java-jdk1.6;客户端环境Windowsxp,Eclipse3.4.2(需增加Axis1.4插件),java-jkd1.6。
1.在Eclipse中创建一个动态网页工程(Dynamic Web Project),工程名称为OMSWebService,如图1所示。
图1 创建动态网页工程
2.在该工程下新建包“cn.ac.radi.mdc.mysqldb”,新建名为“ConnectionMySQLFactory”的类,如图2所示。
图2 新建包及类
3.在新建的ConnectionMySQLFactory.java文件中写自己要发布成服务的类和方法,此处只写了一个测试的类和打印字符串方法,如图3所示。
图3 写要发布的类和方法
4.确认自己的Tomcat服务器可用,然后在ConnectionMySQLFactory.java文件上点右键,选择“Web Services”->“Create Web Service”,如图4所示。
图4 服务器端类及方法发布成WebService
5.在WebService发布选项中把客户端选项调成Start状态,其他都是默认,就不一一截图了,其中有一步是Start Server,只要这步启动成功了,就可以保证没有问题。
6.发布成功后,在OMSWebServiceClient工程中会自动生成相应的客户端代码,如图5所示,会生成5个java文件,其发布方式是把我们要发布的ConnectionMySQLFactory类作为一个继承自java.rmi.Remote的接口,然后用ConnectionMySQLFactoryProxy作为该接口的实现,在ConnectionMySQLFactoryProxy完成对WSDL的访问。
图5 自动生成的WebService客户端代码
7.接下来的这步比较关键,首先把OMSWebService这个服务器的工程打成war包,放到你机器的Tomcat所在位置,路径为*\apache-tomcat-6.0.29\webapps\;然后OMSWebServiceClient这个客户端的工程文件打成jar包,把它放到你想访问服务器端这个WebService服务的任何一台机器上,Windows或者Linux都可以,为了验证跨平台,我是在XP上做的实验。
8.在客户端对WebService的远程调用,使用Axis的调用方式比较易于实现,代码如图6所示。
图6 客户端通过Axis的方式对WebService服务进行调用
9.运行结果如下图所示。
图7 客户端调用服务端WebService运行结果