- 浏览: 3472218 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
7. 在RPC中使用SOAP
设计SOAP的目的之一就是利用XML的扩展性和灵活性来封装和交换RPC调用。这一
节定义了远程过程调用和应答的统一表示形式。虽然可以预计到这种表示形式最可能被用于与第5节中定义的编码方式相结合,但也可能有其它的表示形式。
SOAP的encodingStyle属性(见4.3.2节)可以用来表明方法调用和应答都使用这一节所指定的表示方式。在RPC中使用SOAP和
SOAP协议绑定(见第6节)是紧密相关的。在使用HTTP作为绑定协议时,一个RPC调用自然地映射到一个HTTP请求,RPC应答同样映射到HTTP
应答。但是,在RPC中使用SOAP并不限于绑定HTTP协议。
要进行方法调用,以下的信息是必需的:
- 目标对象的URI
- 方法名
- 方法signature(可选)
- 方法的参数
- 头数据(可选)
SOAP依靠协议绑定提供传送URI的机制。例如,对HTTP来说,请求的URI指出了调用的来源 。除了必须是一个合法的URI之外,SOAP对一个地址的格式没有任何限制。(更多URI的信息参见 [4])
7.1 RPC和SOAP体
RPC方法调用和应答都包含在SOAP Body元素中(见4.3节),它们使用如下的表示形式:
- 一个方法调用用一个结构表示
- 一 个方法调用被看作一个单个的结构,每个[in]和[in/out]参数有一个accessor。结构的名和类型与方法相同。每个[in]和[in /out]参数都被看作一个accessor,这个accessor的名和类型与参数的名和类型相对应。它们的出现顺序和方法中定义的参数顺序相同。
- 一个方法应答用一个结构表示。
- 一 个方法应答被看作一个单个的结构,返回值和每个[in]和[in/out]参数有一个accessor。第一个accessor是返回值,之后是参数 accessor,参数accessor的出现顺序和方法中定义的参数顺序相同。每个参数accessor的名称和类型与参数的名称和类型相对应。返回值 accessor的名称并不重要。同样,结构的名称也不重要,不过,通常在方法名称的后面加上字符串"Response"作为结构的名称。
方 法错误使用SOAP Fault元素(见4.4节)表示。如果绑定的协议有额外的规则表示错误,则这些规则也必须要遵从。正如上面所述,方法调用和应答结构可以按照第5节中规 则编码,或者用encodingStyle属性(见4.1.1节)指定编码方式。应用程序可以处理缺少参数的请求,但是可能返回一个错误。因为返回结果表 示调用成功,错误表示调用失败,所以,在方法应答中同时包含返回结果和错误是错误的。
7.2 RPC和SOAP头
在 RPC编码中,可能会有与方法请求有关但不是正规的方法signature的附加信息。如果这样,它必须作为SOAP头元素的子元素。使用这种头元素的一 个例子是在消息中传递事务ID。由于事务ID不是方法signature的一部分,通常由底层的组件而不是应用程序代码控制,所以没有一种直接的方法在调 用中传递这个必要的信息。通过在头中添加一个给定名字的条目,接收方的事务管理器就可以析取这个事务ID,而且不影响远程过程调用的代码。
8. 安全性考虑
这篇文档中没有涉及完整性和保密性,这些问题将在以后的版本中描述。
9. 参考文献
[1] S. Bradner, "The Internet Standards Process -- Revision 3", RFC2026, Harvard University, October 1996
[2] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, Harvard University, March 1997
[3] E. Whitehead, M. Murata, "XML Media Types", RFC2376, UC Irvine, Fuji Xerox Info. Systems, July 1998
[4] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, MIT/LCS, U.C.Irvine, Xerox Corporation, A ugust 1998.
[5] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, T. Berners-Lee, "Hypert ext Transfer Protocol -- HTTP/1.1", RFC 2616, U.C. Irvine, DEC W3C/MIT, DEC,W3C/MIT, W3C/MIT, January 1997
[6] H. Nielsen, P. Leach, S. Lawrence, "An HTTP Extension Framework", RFC 2774, Microsoft, Microsoft, Agranat Systems
[7] W3C Recommendation "The XML Specification"
[8] W3C Recommendation "Namespaces in XML"
[9] W3C Working Draft "XML Linking Language". This is work in progress.
[10] W3C Working Draft "XML Schema Part 1: Structures". This is work in progress.
[11] W3C Working Draft "XML Schema Part 2: Datatypes". This is work in progress.
[12] Transfer Syntax NDR, in "DCE 1.1: Remote Procedure Call"
[13] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions (MIME)Part One: Format of Internet Message Bodies", RFC2045, Innosoft, First Virtu al, November 1996
10。 附录
A. SOAP封装举例
A.1 请求编码举例
例5 类似于例1,但有一个必要的头
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI"
SOAP-ENV:mustUnderstand="1">
5
</t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DEF</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例6 类似于例1,但有多个请求参数
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceDetailed
xmlns:m="Some-URI">
<Symbol>DEF</Symbol>
<Company>DEF Corp</Company>
<Price>34.1</Price>
</m:GetLastTradePriceDetailed>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
A.2 应答编码举例
例7 与例2类似,但有必要的头部
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Header>
<t:Transaction xmlns:t="some-URI" xsi:type="xsd:int" mustUnderstand="1"> 5 </t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例8 与例2类似,但有一个结构
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-URI">
<PriceAndVolume>
<LastTradePrice> 34.5 </LastTradePrice>
<DayVolume> 10000 </DayVolume>
</PriceAndVolume>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例9 与例2类似,但处理必要的头出错
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:MustUnderstand</faultcode>
<faultstring>SOAP Must Understand Error</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例10 与例2类似,但处理Body出错
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Server Error</faultstring>
<detail>
<e:myfaultdetails xmlns:e="Some-URI">
<message>
My application didn't work
</message>
<errorcode> 1001 </errorcode>
</e:myfaultdetails>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
发表评论
-
SOA 治理简介(收录)
2012-12-19 11:40 2043<p><strong>简介:</ ... -
说明SOA监管(SOA Governance)实例(收录备查)
2012-12-19 11:35 1713SOA 已经不是单纯技术问 ... -
SSL证书支持多个域名吗?服务器证书 多域名 通配型
2011-12-01 15:58 6129目前的SSL证书是不支 ... -
关于小3wifi连接的问题
2011-10-25 09:56 1563我按照论坛里帖子的方法设置了无线路由和小3,且固定了IP,怎么 ... -
HTML5 ~= HTML + CSS + JS APIs
2010-05-17 11:37 2139技术的发展已经不再是靠单一的某项技术来推动,如同HTML5一样 ... -
内容分发网络(CDN)技术研究
2010-05-09 21:24 2745摘要:随着宽带网络和 ... -
内容分发网络的四大关键技术简介
2010-05-09 21:18 1764CDN的关键技术主要有内 ... -
在 Chrome + Switchy 下使用 AutoProxy gfwList PAC
2010-02-21 00:44 10018<!-- /#content-header --> ... -
Google Chrome 参数设置
2010-02-18 23:47 16915一、基础 知识 1.Google Chrome 采用 Web ... -
如何让Firefox优化得比Chrome更快
2010-02-18 23:39 4320Firefox一向比IE快得 ... -
ubuntu 9.10 下tor+autoproxy
2010-02-17 22:57 4141.安装tor a、添加密钥sudo gpg –keyser ... -
VPN发展趋势
2010-02-17 22:04 1017VPN发展趋势 在国外,I ... -
著名网站系统架构设计
2010-01-27 13:13 3735WikiPedia 技术架构学习分 ... -
非常时期,如何用"套"穿墻
2010-01-17 18:51 488引用 非常时期,如 ... -
AutoProxy
2010-01-17 16:45 444http://www.autoproxy.org/zh-CN/ ... -
大型高并发高负载网站的系统架构
2009-03-09 23:58 1801大型高并发高负载网站 ... -
在RHEL 3上安装Hyperic HQ 3.0.3 -- Server端安装日志
2009-03-01 00:26 3771在RHEL 3上安装Hyperic HQ 3.0.3 -- ... -
在RHEL 3上安装Hyperic HQ 3.0.3 --Shell及Agent端安装日志
2009-03-01 00:24 2394在RHEL 3上安装Hyperic HQ 3.0.3 --S ... -
hyperic hq 代理agnet的功能介绍
2009-02-28 23:40 3665hyperic hq 代理agnet的功 ... -
网管软件的设计思想
2009-02-28 23:16 1992网管软件的设计思想 对于企业来说,提高IT效率的重 ...
相关推荐
该SOAP协议规范,不是很完整,此中文文档只是帮助理解,内容并不详细!具体请参照英文文档!此文档目录如下: 目录 1. SOAP简介 2 1.1 SOAP1.2基本内容 2 1.2 符号约定 3 1.3 SOAP消息举例 3 2. SOAP消息交换模型 4 ...
详细的soap协议规范。描述了soap原理和实现技术
SOAP协议规范,总结良好,资源难得。在此提供,希望学习好。
SOAP协议规范,从网上找到的,备份一下。
soap 协议规范, 中文,pdf格式,清晰
Soap协议规范。 SOAP 以XML 形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信 息的机制。
SOAP协议规范,最基础的规范 方便查询,了解SOAP技术
SOAP协议规范。应用word文档,个人觉得比较详细..
soap协议规范介绍
中文Soap协议规范 权限规范,相当不错
详细的介绍了 soap协议的格式,对webservice开发者来说,理解soap 协议有助了加深理解webservice的应用
SOAP协议规范中文版,供大家参考! SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一...
SOAP协议规范详解,应该是RFC文档的原文翻译
SOAP协议规范,包括简介,设计目标,符号约定等
SOAP的主要设计目标是简单性和可扩展性 ,这意味着传统的消息系统和分布对象系统的某些性质不是SOAP规范的一部分。这些性质包括: 分布式碎片收集 成批传送消息 对象引用(要求分布式碎片收集) 激活机制(要求对象...
SOAP1.2协议规范在网上的资料及其零碎,我将中文版和英文版的资料整理出来供大家参考
SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中...