【赛迪网技术社区整理】
说道web service的程序开发,八个月前我加班调试公司和中国电信的商务领航系统的接口的时候,用的就是web service,web service有很多优点,使用web service可以在不同编程语言间实现数据交换,而我那时对web service也不熟,就由同事帮我生成了一大堆web service的框架代码,我则只单独开发业务代码。
这次的另外一个项目也要用web service了,不过人手也少了,没有人帮做web service了,只好自己动手。
好在开发前,有个同事先给我们不熟悉web service的程序员进行了一些培训,我才知道原来以前的web service都是可以自动生成代码的,而且也不难,试了一个下午客户端和服务器端的web service代码就都调试通过了,真不错。
为了更多喜爱开发的程序员也能迅速了解web service的开发,我这里整理了一些通过axis开发web service的一些要点,希望能让不熟悉web service的开发人员能够迅速掌握web service。
一、axis环境的安装
1、安装环境 j2se sdk 1.4,tomcat 5.0,eclipse 3.2。
2、到 http://xml.apache.org 网站下载axis安装包。
3、将axis相关包文件放在web-inf\lib目录下。
4、axis可选的包:activation.jar; mail.jar; xmlsec-1.4.beta1.jar拷贝到web-inf目录下,生成客户端时候需要使用。
axis支持三种web service的部署和开发,分别为:
1、dynamic invocation interface (dii)
2、dynamic proxy方式
3、stubs方式
前两种方式我就不介绍了,同事告诉我他们自己都不使用前两种方式,他们建议我们使用stubs方式,因此我就主要就介绍一下第三种方式。注意,我自己的java源代码是放在d:\workspace\test\目录下,axis相关包文件放在d:\workspace\test\web-inf目录下。
二、编写wsdd发布web服务,编写stub client访问web服务
1、编写服务端程序server,sayhello.java,编译server.sayhello.java
package server;
public class sayhello
{
public string getname(string name)
{
return "hello "+name;
}
}
2、编写wsdd文件
deploy.wsdd文件内容如下:
3、发布服务:
编辑一个deploy.bat,axis_lib为axis.jar路径。内容如下:
set axis_lib=d:\workspace\test\web-inf\lib
set java_cmd=java -djava.ext.dirs=%axis_lib%
set axis_servlet=http://localhost:8080/test/servlet/axisservlet
%java_cmd% org.apache.axis.client.adminclient -l%axis_servlet% deploy.wsdd
执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8080/test/services 就会显示服务列表。
4、生成客户端client stub文件
在浏览器上访问服务器端的服务,可以下载到wsdl文件,通过axis的相关工具,可以自动从wsdl文件中生成web service的客户端代码。
编写一个wsdl2java.bat文件,其内容如下:
set axis_lib=d:\workspace\test\web-inf\lib
set java_cmd=java -djava.ext.dirs=%axis_lib%
set output_path=d:\workspace\test\src
set package=server.sayhello
%java_cmd% org.apache.axis.wsdl.wsdl2java -o%output_path% -p%package% sayhello.wsdl
执行这个批处理文件就可以生成client stub.
生成的stub client文件列表为:sayhello.java,sayhelloservice.java,sayhelloservicelocator.java,sayhellosoapbindingstub.java .
5、编写客户端程序,编译并执行
下面是一段junit测试客户端代码。
import java.net.url;
import junit.framework.test;
import junit.framework.testcase;
import junit.framework.testsuite;
public class testwsclient extends testcase {
public testwsclient(string string) {
super(string);
}
public void sayhelloclient() throws exception {
sayhelloservice service = new sayhelloservicelocator();
sayhello_porttype client = service.getsayhello() ;
string retvalue = client.getname("clientname");
system.out.println(retvalue);
}
public static test suite() {
testsuite suite = new testsuite();
suite.addtest(new testwsclient("sayhelloclient"));
return suite;
}
}
至此,整个服务器端和客户端的web service框架代码就完成了,剩下的就是在里面加入你的业务代码了,怎么样,web service并不难开发吧。
闽公网安备 35060202000074号