说道Web Service
![](/icons/45295de.gif)
![](/icons/45295chengxu.gif)
开发
![](/icons/45295dou.gif)
8个月前我加班调试公司和中国电信
![](/icons/45295de.gif)
商务领航系统
![](/icons/45295de.gif)
接口
![](/icons/45295de.gif)
时候
![](/icons/45295dou.gif)
用
![](/icons/45295de.gif)
就是Web Service
![](/icons/45295dou.gif)
Web Service有很多优点
![](/icons/45295dou.gif)
使用Web Service可以在区别编程语言间实现数据交换
![](/icons/45295dou.gif)
而我那时对Web Service也不熟
![](/icons/45295dou.gif)
就由同事帮我生成了
![](/icons/45295yi.gif)
大堆Web Service
![](/icons/45295de.gif)
框架代码
![](/icons/45295dou.gif)
我则只单独开发业务代码
这次
![](/icons/45295de.gif)
另外
![](/icons/45295yi.gif)
个项目也要用Web Service了
![](/icons/45295dou.gif)
不过人手也少了
![](/icons/45295dou.gif)
没有人帮做Web Service了
![](/icons/45295dou.gif)
只好自己动手
好在开发前
![](/icons/45295dou.gif)
有个同事先给我们不熟悉Web Service
![](/icons/45295de.gif)
![](/icons/45295chengxu.gif)
员进行了
![](/icons/45295yi.gif)
些培训
![](/icons/45295dou.gif)
我才知道原来以前
![](/icons/45295de.gif)
Web Service都是可以自动生成代码
![](/icons/45295de.gif)
![](/icons/45295dou.gif)
而且也不难
![](/icons/45295dou.gif)
试了
![](/icons/45295yi.gif)
个下午客户端和服务器端
![](/icons/45295de.gif)
Web Service代码就都调试通过了
![](/icons/45295dou.gif)
真不错
为了更多喜爱开发
![](/icons/45295de.gif)
![](/icons/45295chengxu.gif)
员也能迅速了解Web Service
![](/icons/45295de.gif)
开发
![](/icons/45295dou.gif)
我这里整理了
![](/icons/45295yi.gif)
些通过Axis开发Web Service
![](/icons/45295de.gif)
![](/icons/45295yi.gif)
些要点
![](/icons/45295dou.gif)
希望能让不熟悉Web Service
![](/icons/45295de.gif)
开发人员能够迅速掌握Web Service
![](/icons/45295yi.gif)
、Axis环境
![](/icons/45295de.gif)
安装
1、安装环境 J2SE SDK 1.4
![](/icons/45295dou.gif)
Tomcat 5.0
![](/icons/45295dou.gif)
eclipse 3.2
2、到 http://xml.apache.org 网站WebSite下载Axis安装包
3、将Axis相关包文件放在WEB-INF\lib目录下
4、Axis可选
![](/icons/45295de.gif)
包:activation.jar; mail.jar; xmlsec-1.4.Beta1.jar拷贝到WEB-INF目录下
![](/icons/45295dou.gif)
生成客户端时候需要使用
Axis支持 3种web service
![](/icons/45295de.gif)
部署和开发
![](/icons/45295dou.gif)
分别为:
1、Dynamic Invocation Interface (DII)
2、Dynamic Proxy方式
3、Stubs方式
前两种方式我就不介绍了
![](/icons/45295dou.gif)
同事告诉我他们自己都不使用前两种方式
![](/icons/45295dou.gif)
他们建议我们使用Stubs方式
![](/icons/45295dou.gif)
因此我就主要就介绍
![](/icons/45295yi.gif)
下第 3种方式
![](/icons/45295dou2.gif)
注意
![](/icons/45295dou.gif)
我自己
![](/icons/45295de.gif)
Java源代码是放在D:\workspace\test\目录下
![](/icons/45295dou.gif)
Axis相关包文件放在D:\workspace\test\WEB-INF目录下
2、编写wsdd发布web服务
![](/icons/45295dou.gif)
编写stub client访问web服务
1、编写服务端
![](/icons/45295chengxu.gif)
server
![](/icons/45295dou.gif)
SayHello.java
![](/icons/45295dou.gif)
编译server.SayHello.java
package server;
public
![](/icons/45295class.gif)
SayHello
{
public String getName(String name)
{
![](/icons/45295return.gif)
"hello "+name;
}
}
2、编写wsdd文件
deploy.wsdd文件内容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="SayHello" provider="java:RPC">
<parameter name="
![](/icons/45295class.gif)
Name" value="server.SayHello.getName"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
3、发布服务:
编辑
![](/icons/45295yi.gif)
个deploy.bat
![](/icons/45295dou.gif)
Axis_Lib为axis.jar路径
![](/icons/45295dou2.gif)
内容如下:
![](/icons/45295set.gif)
Axis_Lib=D:\workspace\test\WEB-INF\lib
![](/icons/45295set.gif)
Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
![](/icons/45295set.gif)
Axis_Servlet=http://localhost:8080/test/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
执行这个批处理文件
![](/icons/45295dou.gif)
这时候
![](/icons/45295dou.gif)
如果提示成功
![](/icons/45295de.gif)
话
![](/icons/45295dou.gif)
访问http://localhost:8080/test/services 就会显示服务列表
4、生成客户端client stub文件
在浏览器上访问服务器端
![](/icons/45295de.gif)
服务
![](/icons/45295dou.gif)
可以下载到WSDL文件
![](/icons/45295dou.gif)
通过Axis
![](/icons/45295de.gif)
相关工具
![](/icons/45295dou.gif)
可以自动从WSDL文件中生成Web Service
![](/icons/45295de.gif)
客户端代码
编写
![](/icons/45295yi.gif)
个WSDL2Java.bat文件
![](/icons/45295dou.gif)
其内容如下:
![](/icons/45295set.gif)
Axis_Lib=D:\workspace\test\WEB-INF\lib
![](/icons/45295set.gif)
Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
![](/icons/45295set.gif)
Output_Path=D:\workspace\test\src
![](/icons/45295set.gif)
Package=server.SayHello
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% SayHello.wsdl
执行这个批处理文件就可以生成client stub.
生成
![](/icons/45295de.gif)
stub client文件列表为:SayHello.java
![](/icons/45295dou.gif)
SayHelloService.java
![](/icons/45295dou.gif)
SayHelloServiceLocator.java
![](/icons/45295dou.gif)
SayHelloSoapBindingStub.java .
5、编写客户端
![](/icons/45295chengxu.gif)
![](/icons/45295dou.gif)
编译并执行
下面是
![](/icons/45295yi.gif)
段junit测试客户端代码
import java.net.URL;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public
![](/icons/45295class.gif)
TestWSClient extends TestCase {
public TestWSClient(String
![](/icons/45295string.gif)
) {
super(
![](/icons/45295string.gif)
);
}
public void SayHelloClient
![](/icons/45295kh.gif)
throws Exception {
SayHelloService service =
![](/icons/45295new.gif)
SayHelloServiceLocator
![](/icons/45295kh.gif)
;
SayHello_PortType client = service.getSayHello
![](/icons/45295kh.gif)
;
String retValue = client.getName("clientname");
![](/icons/45295System.gif)
.out.pr
![](/icons/45295int.gif)
ln(retValue);
}
public
![](/icons/45295static.gif)
Test suite
![](/icons/45295kh.gif)
{
TestSuite suite =
![](/icons/45295new.gif)
TestSuite
![](/icons/45295kh.gif)
;
suite.addTest(
![](/icons/45295new.gif)
TestWSClient("SayHelloClient"));
![](/icons/45295return.gif)
suite;
}
}
至此
![](/icons/45295dou.gif)
整个服务器端和客户端
![](/icons/45295de.gif)
Web Service框架代码就完成了
![](/icons/45295dou.gif)
剩下
![](/icons/45295de.gif)
就是在里面加入你
![](/icons/45295de.gif)
业务代码了
![](/icons/45295dou.gif)
如何样
![](/icons/45295dou.gif)
Web Service并不难开发吧
延伸阅读
最新评论