AXIS项目
Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本是1.1,可以从 http://ws.apache.org/axis/index.html下载。
下图是AXIS核心引擎的体系结构图:
整个AXIS项目包括以下几个部分:
AXIS目前版本支持的标准是:W3C SOAP 1.1 和 1.2;WSDL 1.1;SAAJ 1.1(SUN公司:SOAP with Attachments API for Java);JAX-RPC(SUN公司:Java API for XML-Based RPC)1.0。
一, 环境搭建
1,安装JDK1.5及以上.
2,安装Tomcat5及以上.
3,下载AXIS项目打包文件axis-1_1.zip解压缩后将目录中的webapps目录下的axis子目录拷贝到tomcat安装目录的webapps下
4验证AXIS的安装:重新启动Tomcat服务器后打开浏览器输入网址http://localhost:8080/axis 后应该出现如下图所示页面,点击链接"Validate"来验证Axis所需的几个JAVA包是否齐全。
点击超链接Validate后,AXIS会自动检查所需的每一个JAVA组件,这协组件分为:必需组件以及可选组件,必须保证所有必需组件都存在,如下图所示即为验证成功。
二, Web Service服务端开发
编写JAVA类Hello.java,内容如下:
public class Hello{ public String hello(String name){ if(name==null) name = ""; return "hello,"+name+""; } } |
|
仅此而已,无需编译,将该文件改名为Hello.jws并拷贝到AXIS应用目录tomcat安装目录的webapps\axis下。 下面我们就可以测试该Web服务了,打开浏览器并输入刚刚创建的文件名对应的URL地址 http://localhost:8080/axis/Hello.jws 浏览器显示如下结果:
|
点击页面上的链接查看该Web服务对应的WSDL信息如下所示(我们将在下一小节简单介绍WSDL):
1. <!--sp-->xml version="1.0" encoding="UTF-8" ?>
2. -<wsdl:definitions
3. targetNamespace="http://localhost:8080/axis/Hello.jws"
4. xmlns="http://schemas.xmlsoap.org/wsdl/"
5. xmlns="http://www.w3.org/2000/xmlns/"
6. xmlns:apachesoap="http://xml.apache.org/xml-soap"
7. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
8. xmlns:impl="http://localhost:8080/axis/Hello.jws"
9. xmlns:intf="http://localhost:8080/axis/Hello.jws"
10. xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
11. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
12. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
13. - <wsdl:message name="helloRequest">
14. <wsdl:part name="name" type="xsd:string" />
15. wsdl:message>
16. + <wsdl:message name="helloResponse">
17. - <wsdl:portType name="Hello">
18. - <wsdl:operation name="hello" parameterOrder="name">
19. <wsdl:input name="helloRequest" message="intf:helloRequest" />
20. <wsdl:output name="helloResponse" message="intf:helloResponse" />
21. wsdl:operation>
22. wsdl:portType>
23. - <wsdl:binding name="HelloSoapBinding" type="intf:Hello">
24. <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
25. - <wsdl:operation name="hello">
26. <wsdlsoap:operation soapAction="" />
27. - <wsdl:input name="helloRequest">
28. <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
29. namespace="http://DefaultNamespace" />
30. wsdl:input>- <wsdl:output name="helloResponse">
31. <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
32. namespace="http://localhost:8080/axis/Hello.jws" />
33. wsdl:output>
34. wsdl:operation>
35. wsdl:binding>
36. - <wsdl:service name="HelloService">
37. - <wsdl:port name="Hello" binding="intf:HelloSoapBinding">
38. <wsdlsoap:address location="http://localhost:8080/axis/Hello.jws" />
39. wsdl:port>
40. wsdl:service>
41. wsdl:definitions>
三, Web Service客户端开发
(java客户端)
我们前面安装的AXIS环境中已经包含着这样的工具,它是一个JAVA类,类名为:org.apache.axis.wsdl.WSDL2Java。打开命令行窗口,转到AXIS目录下的WEB-INF子目录。确保Tomcat服务已经处于启动状态,键入命令 :
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl
结果是在当前所在目录下产生一个子目录 localhost/axis/Hello_jws,该目录下有四个JAVA源文件:
Hello.java 定义了Web服务接口,此例中只有一个hello方法。
HelloService.java 定义了用于获取Web服务接口的方法。
HelloServiceLocator.java 接口HelloService的具体实现。
HelloSoapBindingStub.java Web服务客户端桩,通过该类与服务器交互。
四,编写测试类
//Main.java
package localhost.axis.Hello_jws;
public class Main{
public static void main(String[] args) throws Exception{
HelloService service = new HelloServiceLocator();
Hello hello = service.getHello();
System.out.println("Response:"+hello.hello("world"));
}
}
用以下命令进行编译:
javac -classpath lib\axis.jar;lib\jaxrpc.jar localhost\axis\Hello_jws\*.java
如果编译没有问题的话执行该测试程序:
java -Djava.ext.dirs=lib -cp . localhost.axis.Hello_jws.Main//
运行结果:Response:hello,world