分享
 
 
 

使用SAAJ1.2发送和接收二进制Web服务内容(一)

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要

开发者们正确地批评了SOAP(Simple Object access PRotocol),因为它过分地复杂。然而,事实上,SOAP只是一种xml信息格式,并且,它的复杂性更多的与我们如何活用SOAP有关系。在SOAP的最简单形式中,它能够在Web服务器端和客户端传递结构化的信息。由于SOAP信息并不限制为XML数据,它还能够包括二进制的内容,所以SOAP信息代表了一种在Web上传递信息的简单方式。在Frank Sommers的最新的Web Services专栏中,他演示了如何使用SAAJ1.2(SOAP with Attachments API for java 1.2)创建,解析和发送带有二进制内容的SOAP信息。

(2100字;2003年,9月)By Frank Sommers

原文第一页:http://www.javaworld.com/javaworld/jw-09-2003/jw-0912-webservices.Html

在写这篇文章的时候,大多数的Web服务由简单的信息交换组成:客户端连接到Web服务器端,并发送一条消息给服务端。Web服务端处理客户端的请求并发送回应给客户端。这个简单的请求/回应模式,模拟了HTTP协议帮助客户端/服务器端交互的过程。同样由于HTTP,Web服务信息的交换经常必须包含二进制的内容。比如图像,文档或者声音片段。这篇文章介绍了使用SAAJ1.2(SOAP with Attachements API for Java 1.2)来发送和接收二进制内容Web信息。

在深入到传送二进制Web服务内容的复杂机制前,值得指出的是:简单的请求/回应类型的Web服务,与客户端/服务器端的远程过程调用(RPC)方式不同。在RPC中,服务器给出一个类似API的接口。而客户端通过使用远程调用服务的API,传递必要的参数和接收调用值来启用一个服务。

基于XMl的RPC调用类似在OO系统中调用一个对象一样。事实上,当你用基于XML的JAVA API工作时(Java API for XML-based RPC简JAX-RPC),你总是觉得在跟Java对象工作,而不是跟XML文档工作。JAX-RPC能让你把Web服务看作远程对象,这很像Java RMI(Remote Method Invocation)。JAX-RPC运行时把高层次的OO方法调用转化为远程Web服务需要XML文档。虽然RPC类型的Web服务通常能提供更便捷的编程模型,但是RPC调用也必须依赖更低的消息层来完成组成远程调用XML信息交换。

对于有些Web服务来说,直接在低级别的消息层编程通常是很有用的。例如,如果你想调用一个处理订单的文档并返回收据,对这样的Web服务,你能够很容易地把文档交换模块化为一个请求/回应的信息交换。替代远程方法调用的是,你将构建XML信息,直接发送这些信息到Web服务,如果有的话,还会处理服务的XML回应。由于SOAP为Web信息服务定义了公共的信息格式,你需要构建符合SOAP格式的信息,并且,一旦服务有回应,就要把这些SOAP回应信息解析成你的程序所能理解的格式。

SAAJ提供了一个能方便地构建和读取SOAP信息的库,这个库还允许你通过网络接收和发送SOAP信息。SAAJ定义了javax.xml.soap包。在这个包里面的类组成了最初的JAXM(Java API for XML Messaging),但是最近他们被分离出来成为单独的API。JAXM依赖于SAAJ来构建和处理SOAP信息,并且依赖SAAJ来增加信息的可靠性和增加其他的XML信息特征。尽管SAAJ是J2EE的一部分,JAXM却不是。这篇文章聚焦于SAAJ中最有用的一个方面:就是SAAJ捆绑二进制内容到SOAP信息的能力。

使用附件的好处

尽管SOAP的设计核心集中在信息中封装XML文档,但是,SOAP的附件特征扩展了SOAP所能包含的信息,除了普通的SOAP部分,还可以包括0个到多个附件,如图1所示。每一个附近都由一个MIME类型定义,并且能采用任何的二进制流内容。

图1:带有附件的SOAP信息

当客户端希望传送二进制数据的时候,SOAP的附件特征是非常有用的,比如传送图像,音频数据给一个Web服务。如果没有SOAP附件,发送一个二进制信息会困难很多。比如,一个客户端的SOAP信息传送二进制文件的URL地址。那么,客户端不得不操作一个HTTP服务器,来让Web服务找到这个二进制文件。这会给Web服务的客户端造成过度的负载,特别是当客户端运行在资源有限的设备中,比如数码相机或者扫描仪。SOAP的附件能力使得任何的Web服务客户,能够在SOAP信息里直接传送内嵌二进制文件的SOAP信息。

SOAP附件,已被证明能很方便地与网络站点入口交互。考虑这样一个现实中的房产代理网络,它需要发送房子的介绍和照片到房产查询中心入口。如果这个入口操作一个servlet来让带附件的SOAP信息置入,一个房产代理可以用几个SOAP信息更新它的列表,包括这些房子的照片。SOAP信息体可能嵌入了房子所有权的介绍,并且SOAP附件能带有房子图片文件。在这样的情况下,当一个入口操作servlet接收了这种信息,它就能返回一个认证文档,表明了在入口的发布的有效性。图2说明了这样的一个Web服务。

房产代理的WEB服务,使用了带附件的SOAP信息

冬临 ,java 爱好者,Matrix xml soap翻译小组成员

进入讨论组讨论。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有