用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
SOAP(Simple Object Access Protocol,简单对象访问协议) 是一种基于XML的,用于计算机之间交换信息的协议。SOAP能应用于各种消息接发系统,并能通过各种传输协议进行消息传递,但最初的侧重点是通过HTTP传输的远程过程调用。SOAP是Web service的一个重要组成部份,如果把Web service比喻成Internet,那么SOAP就可以比喻成TCP/IP。SOAP是一种协议而非具体产品,微软也有自己的SOAP实现产品,而Java下比较流行的SOAP实现产品就是Apache SOAP,不过它的下一个版本已经改名成AXIS了。
SOAP是用XML文件来做为数据转输的载体的,走HTTP的线路。一般企业的防火墙都开放HTTP的80端口,所以SOAP不会被防火墙阻断,这算是SOAP的一个优点。信息转输的双方都要求支持SOAP服务,因为XML文件发过去,则对方需要有SOAP服务来接收,然后对方会有反馈也是XML文件,这时你也需要安装SOAP服务来接收。
1. 环境配置
为了运行程序,我们首先必须配置好环境:
共要下载四个软件包,它们都是开源免费的。其中,前两个是Apache的,后两个是SUN网站的,如下所示:
? SOAP:http://apache.freelamp.com/ws/soap/version-2.3.1/ ? Xerces:http://xml.apache.org/dist/xerces-j/ ? JavaMail:
http://java.sun.com/products/javamail/downloads/index.html ? JAF:http://java.sun.com/products/javabeans/glasgow/jaf.html
下载后将它们分别解压缩。分别在这四个包的解压目录中找到:xerces.jar、soap.jar、mail.jar、activation.jar(JAF的),则是四个jar文件是我们所需要的。
本机安装环境:WindowsXP(SP2) + JDK1.4.2_06 + Tomcat5.0.28 + SOAP2.3.1 配置步骤:
1、安装JDK和Tomcat。过程比较简单,这里不再详述。
2、将刚才所找到的四个jar文件复制到Tomcat的“Tomcat 5.0\\common\\lib”
目录下,这个目录是Tomcat的默认包目录,在这个目录中的所有包在Tomcat启动时都会被自动加载。
3、将\\ JDK1.4.2\\lib\\路径下的tools.jar也复制到Tomcat的“Tomcat
5.0\\common\\lib”目录下。
4、将soap解压目录的webapps目录下的soap.war文件,复制到Tomcat
的“Tomcat 5.0\\webapps”目录下,这个目录是Tomcat的WEB应用所在目录。重新启动Tomcat,Tomcat会自动将其解压,并配置好路径。可以尝试在浏览器中输入“http://localhost:8080/soap/”, 看SOAP是否安装好。
5、注意在编写程序时,需要将所得到的四个jar文件路径设置到所使用的
Java编程环境中,因为在程序中需要用到其中的类文件。具体步骤略。 6、重启Tomcat服务。这时Tomcat会将“Tomcat 5.0\\common\\lib”目录下
新加入的包加载到内存中。
到此,我们已经配置好了程序运行所需要的环境。
2. 基于SOAP的XML文档网络传输
SOAP规范主要定义了四个元素:SOAP信封规范,传输和协议绑定,编码规则和一个RPC协定。用于实现消息的网络传输。
? SOAP信封规范,SOAP信封规范对计算机间传递的数据如何封装定义了
具体的规则。这包括应用特定的数据,如要调用的方法名,方法参数和返回值;还包括谁将处理封装内容,失败时如何编码错误消息等信息。 ? 数据编码规则,为了交换数据,计算机必须在编码特定数据类型的规则
上达成一致,SOAP也有自己的一套编码数据类型的约定。大部分约定都基于W3C XML Schema规范。
? RPC协定,SOAP能用于单向和双向等各种消息接发系统。SOAP为双向消
息接发定义了一个简单的协定来进行远程过程调用和响应,这使得客户
端应用可以指定远程方法名,获取任意多个参数并接受来自服务器的响应。 ? 传输和协议绑定,提供了更底层协议传输SOAP封套的一套通用机制。 而以上四个部分统称为一个SOAP消息。我们先来看一篇XML文档是如何变成SOAP的。采用一个简单的购物订单文件PO.xml 。内容为: Joe Smith