详解基于J2ME平台下SOAP协议的应用
义了协议所要求的最关键的部分,有意地忽略了垃圾收集、对象激活等方面的细节。像TCP/IP协议一样,SOAP协议也包括客户端和服务器两个部分。
SOAP客户端是一种创建XML文档的程序,该XML文档包含在分布式系统远程调用方法所需的信息。SOAP客户端不是传统意义上的程序,它除了用作普通的桌面应用程序外,还可以是一种Web服务器或基于服务器的应用程序。来自SOAP客户端的消息和请求一般是通过HTTP发送的。因而,SOAP文档可以穿过几乎所有的防火墙,从而能跨越不同的平台交换信息。 SOAP服务器只是用于监听SOAP消息的特殊代码,它可用作SOAP文档的分配器和解释器。外部Web服务可以与基于J2EE技术的应用程序服务器交互,这种应用程序服务器可以处理多种客户端的SOAP请求。 SOAP定义了数据编码规则,称为基准编码或“Section5”编码,它是出自SOAP规范中描述数据编码规则的内容。SOAP编码可以简短地描述成简单值或复合值的集合。简单值可以是简单类型,如整型、浮点型和字符型,或者是XML架构规范第2部中定义的内置类型,包括各种数据类型,如字节型数组和枚举。复合值包括结构、数组和XML架构制定组定义的复杂类型。 SOAP在标准化消息格式环境中,可以做所有它能完成的工作。消息的主体部分是“text/xml”形式的MIME类型,并且包含一个SOAP封套。该封套是一个XML文档。封套包含了报头(可选的)和报文(必须有的)。封套的报文部分总是用于最终接收的消息,而报头项目可以确定执行中间处理的目标节点。附件、二进制数字及其他项目可以附加到报文上。 SOAP提供了一种让客户端指定哪个中间处理节点必须处理报头项目的方法。由于报头与SOAP消息的主体内容是互不相关的,所以可用它们给消息添加信息,而不会影响对消息报文的处理。 三、SOAP协议在J2ME平台中的实现 如何真正地将移动设备融入到WebServices中去呢?这就需要使得PDA、手机等成为WebServices的客户端,因此这些设备至少应该具有处理XML信息的能力。在J2ME平台中实现SOAP客户端的功能,使得嵌入式设备能够连接企业的WEB服务是企业应用中比较常见的需求。J2ME的基本类库中没有提供SOAP的支持,所以需要在J2ME平台中开发实现SOAP的处理功能。 实现SOAP协议客户端的关键问题分为两个方面:J2ME不同配置的数据类型不一样,导致与SOAP协议封装的数据类型不匹配;J2ME平台没有提供对XML文件进行处理的功能。 针对第一个问题,需要注意只能使用基本类型,对不匹配的数据类型采用使用基本类型复合的方式进行处理。针对第二个问题需要在J2ME中扩展对XML文件处理的功能。目前有有两种方法对XML文件进行解析。一种是采用DOM的方式,另外一种是采用SAX的方式。操作DOM是一个与XML相互作用的简单方法,通常这个XML是一棵完整的XML树,被解析成一个存放在存储器中的节点结构,你可以遍历这棵树。它非常简单易用,但是因为整棵树存在于存储器中造成存储器的负担,而对于嵌入式系统来说存储器的资源是有限的,因此这种方法的使用具有一定局限性。第二种方法在捕捉语法分析事件中,每当语法分析程序遇到数据中的特定结构,它就会遍历XML数据,然后把结果发回前面注册的一个事件监听器中。比如说,当语法分析程序遇到一个起始标记,如<html>,那么事件监听器将接收一个事件,通知它这个情况,并且向它传递任何所需的信息。相对DOM方式的处理,SAX方法对存储器的要求比较低,但是效率要比DOM方式低。 Enhydra的KXML是一个只占很小存储空间的XML语法分析程序,对于J2ME应用程序非常适合。KXML支持DOM语法分析和操作,但是不支持SAX语法分析。取而代之,它使用一种稍微不同的称为“Pull”的分析方法。 下面是KXML采用DOM的方式处理XML数据的例子: 498)this.width |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |