龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

详解J2ME的Web服务API(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
消费Web服务 要消费Web服务,您必须首先创建服务调用存根。让这些存根来执行任务,例如对输入值和返回值进行编码和解码、与JSR172运行时交互来调用远

消费Web服务

要消费Web服务,您必须首先创建服务调用存根。让这些存根来执行任务,例如对输入值和返回值进行编码和解码、与JSR172运行时交互来调用远程服务端点。存根通过运行时的服务提供者接口(SPI)与运行时进行交互,这样通过概述运行时执行的详细情况,使存根在不同厂商之间的执行更便捷。

存根通常是用工具生成的,该工具读取一个WSDLXML文档,文档描述了将要使用到的Web服务。同样的,WSDL文档通常也是通过工具生成的,该工具读取接口定义,例如Java接口产生了WSDL文档。

从我们移动开发的角度来看,需要消费的WSDL文档通常已经存在,您需要做的仅仅是生成JSR172WSA存根。要生成这些存根,您应该使用例如J2MEWirelessToolkit2.1存根生成器这样的工具,如下图所示:

图3-生成JSR172WSA存根

生成JSR172WSA存根

该生成器生成存根Java文件,以及相关的支持类。如下一部分所描述的,它还考虑到了WSDL到Java的数据类型映射。

一旦生成了JSR172JAX-RPC存根和支持文件,您的应用程序就已经被编译并部署到启用了JSR172的设备上了,消费Web服务是很简单的而且几乎是透明的。您很快就会看到,调用远程方法几乎和调用本地方法一样简单。

JSR172JAX-RPC子集API

JSR172远程方法调用API是以基于XML的RPC的J2SEJavaAPI(JAX-RPC1.1)的子集为基础的。它同样遵守WS-I基本概要。下面来详细研究一下JSR172JAX-RPC子集API:

它支持:

SOAP1.1。
任何可以传送SOAP消息的传输,例如HTTP1.1,都有一个定义好的用于SOAP1.1的协议绑定。
SOAP消息的文字表示代表一个RPC调用或应答。

下面(是)数据类型和相应的Java映射:

xsd:boolean到boolean或Boolean。
xsd:byte到byte或Byte。
xsd:short到short或Short。
xsd:int到int或Integer。
xsd:long到long或Long。
xsd:float到float,或Float。对基于CLDC1.0的平台,该数据类型映射到String。
xsd:double到double,或Double。对基于CLDC1.0的平台,该数据类型映射到String。
xsd:string到String。
xsd:base64Binary到byte[]。
xsd:hexBinary到byte[]。
xsd:complexType到基本类型和类类型序列。
xsd:QName到javax.xml.namespace.QName。

以XML数组模式为基础的基本类型和复杂类型(结构中包含基本类型或复杂类型)数组。

它不支持:

带附件的SOAP消息。
SOAP消息处理器。
SOAP消息的编码表示。
服务端点(不是Web服务生产者)。
服务发现支持(UDDI)。

设备端没有规定XML编码方法。这样做是通过允许执行程序使用更有效的数据编码方法来帮助减少网络传输,例如在设备和无线网关间使用二进制协议(只要这样编码对消费者和生产者是透明的)。

JSR172远程调用API包括下面这些包:

javax.microedition.xml.rpc
javax.xml.namespace
javax.xml.rpc
java.rmi(包括确保JAX-RPC相关型)
注意这些API(有一些异常API,例如RemoteException)不是直接由应用程序调用,相反,应用程序调用生成的存根。上面的API主要是供存根使用的。有关详细信息请参阅JSR172规范和/或Java文档。

使用JSR172JAX-RPC调用远程服务

一旦生成、编译并部署了JSR172JAX-RPC存根和支持文件,消费远程服务就很容易了。事实上,除了导入RemoteException,完成最少量的JAX-RPC细节初始化工作,您的应用程序不光是看上去,而且运行起来也和非Web服务消费者应用程序一样。由于有JSR172存根和运行时,实现这种简单的应用程序是可能的,正如前面提到的,JSR172存根和运行时把与远程调用相关的大部分细节都隐藏了。

要调用远程服务,您首先需要实例化存根,完成最少的存根初始化工作,然后就是如何编写调用存根方法。下面的代码片断显示了如何使用JSR172JAX-RPC调用远程服务。
 

精彩图集

赞助商链接