一、Axis安装
?
??? 1. 环境 JDK 6.0 、Tomcat 6.0
?
??? 2. 到 http://ws.apache.org/Axis/ 网站下载Axis安装包,我使用的是axis1.4
?
??? 3. 解压缩安装包,将axis-bin-1_4/axis-1_4/webapps下的axis包拷贝到TOMCAT_HOME/webapps/下
?
??? 4. 启动tomcat,访问http://localhost:8080/Axis 检查安装是否成功
??? 5. 以上步骤执行成功,可以开发webservice例子了
??? Axis支持三种web service的部署和开发,分别为:
??? 1. Dynamic Invocation Interface ( DII)
??? 2. Stubs方式
??? 3. Dynamic Proxy方式
??? 由于实际应用中Stubs方式使用的最频繁,所以重点讲解Stubs方式
二、axis Stubs方式实现
????? 1. 编写服务端程序SayHello.java,编译SayHello.java
?????????? package server; ? ???? public class SayHello { ???????? public String getName(String name) { ??? ?? ??? return "hello " + name; ???????? } ?????? } ? ????? 2. 将编译后的文件拷贝到TOMCAT_HOME/webapps/axis/WEB-INF/classes下,如:?? ???????? D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes ????? 3. 执行如下命令生成SayHello.wsdl和deploy.wsdd ??????? java -cp %axis_classpath%;D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes? ?????? org.apache.axis.wsdl.Java2WSDL -oSayHello.wsdl -lhttp://localhost:8080/axis/services/SayHello -n ?????? sayhello -d? server.SayHello ?????? 注意:%axis_classpath%是在环境变量中设置的axis需要的jar包,D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes是类文件所在的目录 ????? 4. 执行如下命令生成client stub ????? D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes>java -cp %axis_classpath%; ????? D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes org.apache.axis.wsdl.WSDL2Java ????? SayHello.wsdl -p client ????? 5. 发布服务 ????? D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes>java -cp %axis_classpath%; ????? D:/appsoft/devtools/Tomcat6.0/webapps/axis/WEB-INF/classes org.apache.axis.client.AdminClient ????? server/deploy.wsdd ????? 6. 生成的stub client文件列表为: ??????? SayHello.java ??????? SayHelloService.java。 ??? ??? SayHelloServiceLocator.java ??????? SayHelloSoapBindingStub.java ????? 7. 编写客户端程序,编译并执行 ???????? package test; ???????? import client.SayHelloService; ???? ?? ? ? ? ?? public class SayHelloClient { ?????? ? public static void main(String[] args) { ??? ?????? try { ??? ??? ???????? SayHelloService service = new client.SayHelloServiceLocator(); ??? ??? ???????? client.SayHello_PortType client = service.getSayHello(); ??? ??? ???????? String retvalue = client.getName("zhangsan"); ??? ??? ???????? System.out.println(retvalue); ??? ??????? } catch (Exception e) { ??? ??? ?? ? ??? System.err.println("Execution failed. Exception: " + e); ??? ?? ? ?? } ????????? } ??????? }