一、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方式
二 新建web项目test,编写服务端程序server,SayHello.java,编译server.SayHello.java
package server;
public class SayHello
{
public String getName(String name)
{
return "hello "+name;
}
}
三 编写deploy.wsdd文件
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java" >
<!--HelloWorld为webservice的名字,java:RPC为服务类型, -->
<service name = "SayHello" provider = "java:RPC" >
<!--参数className指定具体的类 -->
<parameter name = "className" value = "server.SayHello" />
<!-- 此参数定义允许调用的方法,*号表示所有public方法 -->
<parameter name = "allowedMethods" value = "*" />
</service >
</deployment >
四 发布服务
set Axis_Lib=E:/MyTest/test/WebRoot/WEB-INF/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:8081/test/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8081/test/services 就会显示服务列表
并访问http://localhost:8081/test/services/SayHello?wsdl
生成文件sayHello.wsdl
五 编写WSDL2Java.bat,WSDL2Java.bat内容如下
set Axis_Lib=E:/MyTest/test/WebRoot/WEB-INF/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=E:/MyTest/test/src
set Package=client.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 .
六 编写客户端程序,编译并执行
public class Test {
/**
* @param args
* @throws ServiceException
* @throws RemoteException
*/
public static void main(String[] args) throws ServiceException, RemoteException {
SayHelloService service = new SayHelloServiceLocator();
SayHello_PortType client = service.getSayHello() ;
String retValue = client.getName("clientname");
System.out.println(retValue);
}
}