当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: SOAP(Simple Object Access Protocol,简单对象访问协议) 是一种基于XML的,用于计算机之间交换信息的协议。
 

 

 ·使用httpunit进行系统测试    »显示摘要«
    摘要: 申明:本文引此互联网-------------1 httpunit简介httpunit是sourceforge下面的一个开源项目,它是基于junit的一个测试框架,主要关注于测试web应用,解决使用junit框架无法对远程web内容进行测试的弊端。当前的最新版本是1.5.4。为了让htpunit正常运行,你应该安装jdk1.3.1或者以上版本。1.1 工作原理httpunit通过模拟浏览器的行为......
 ·java中带标号的break、continue    »显示摘要«
    摘要: java中带标号的break、continue,类似与goto示例:class labelbreak{ public static void main(string[] args){ int i=0; outer: //标号必须在一个循环的前面,意思是这个循环的名字叫outer,并且这一行后面不能有任何语句了 for(;true;){ inner: for(;i<10;i++){ if(i......


用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服务来接收.

【程序编程相关:java程序员面试的悖论

【推荐阅读:Root cause of Servle

1. 环境配置

【扩展信息:Java参数传递的一些心得

为了运行程序,我们首先必须配置好环境:

共要下载四个软件包,它们都是开源免费的.其中,前两个是apache的,后两个是sun网站的,如下所示:

n        soap:http://apache.freelamp.com/ws/soap/version-2.3.1/

n        xerces:http://xml.apache.org/dist/xerces-j/  

n        javamail:http://java.sun.com/products/javamail/downloads/index.html 

n        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协定.用于实现消息的网络传输.

n        soap信封规范,soap信封规范对计算机间传递的数据如何封装定义了具体的规则.这包括应用特定的数据,如要调用的方法名,方法参数与返回值;还包括谁将处理封装内容,失败时如何编码错误消息等信息.

n        数据编码规则,为了交换数据,计算机必须在编码特定数据类型的规则上达成一致,soap也有自己的一套编码数据类型的约定.大部分约定都基于w3c xml schema规范.

n        rpc协定,soap能用于单向与双向等各种消息接发系统.soap为双向消息接发定义了一个简单的协定来进行远程过程调用与响应,这使得客户端应用可以指定远程方法名,获取任意多个参数并接受来自服务器的响应.

n        传输与协议绑定,提供了更底层协议传输soap封套的一套通用机制.

而以上四个部分统称为一个soap消息.我们先来看一篇xml文档是如何变成soap的.采用一个简单的购物订单文件po.xml .内容为:

<?xml version="1.0" encoding="utf-8"?>

<purchaseorder xmlns="urn:oreilly-jaws-samples">

    <shipto country="us">

        <name>joe smith</name>

        <street>14 oak park</street>

        <city>bedford</city>

        <state>ma</state>

        <zip>01730</zip>

    </shipto>  

    <items>

        <item partnum="872-aa">

            <productname>candy canes</productname>

            <quantity>444</quantity>

            <price>1.68</price>

            <comment>i want candy!</comment>

        </item>

    </items>

</purchaseorder>

其对应的soap消息为:

post /servlettemp/httpreceive http/1.0

host: localhost

content-type: text/xml; charset=utf-8

content-length: 939

soapaction: "urn:oreilly-jaws-samples"

 

<?xml version=1.0 encoding=utf-8?>

<soap-env:envelope

xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema">

<soap-env:header>

<jaws:messageheader xmlns:jaws="urn:oreilly-jaws-samples" soap-env:mustunderstand="1" xmlns:soap-env="urn:oreilly-jaws-samples"><from>me</from><to>you</to><messageid>9999</messageid></jaws:messageheader>

</soap-env:header>

<soap-env:body>

<purchaseorder xmlns="urn:oreilly-jaws-samples">

    <shipto country="us">

        <name>joe smith</name>

        <street>14 oak park</street>

        <city>bedford</city>

        <state>ma</state>

        <zip>01730</zip>

    </shipto>


...   下一页
 ·基于j2ee的开发的一些经验    »显示摘要«
    摘要: 1.cmp的findbyprimarykey有时将返回null:给findbyprimarykey送了一个数据库中不存在的键值,就抛出了异常如果参数是数据库中存在的一个关键字,则是返回对应的primarykey2.对于bmp,必须远程的调用一个create方法,否则只能被使用一次,就会出现jdbc的问题。这个create()如果不是用返回对象的话可以任意写一个返回primaykey值即可3.re......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE