自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解J2ME的Web服務(wù)API

開發(fā) 前端
用于Java2平臺(tái)袖珍版的Web服務(wù)API(WSA)是由JavaCommunityProcess為Java規(guī)范請(qǐng)求172(JSR172)而定義的,這些API是兩個(gè)相互獨(dú)立的可選包,用于遠(yuǎn)程服務(wù)調(diào)用和XML解析。

你對(duì)J2ME的Web服務(wù)API是否了解,這里和大家分享一下,Java2平臺(tái)袖珍版(J2ME)平臺(tái)中的Web服務(wù)是由Java規(guī)范請(qǐng)求172(JSR172)定義的,它與標(biāo)準(zhǔn)Web服務(wù)遵循同樣的規(guī)范、結(jié)構(gòu)以及調(diào)用模型。

J2ME的Web服務(wù)API講解

用于Java2平臺(tái)袖珍版(Java2Platform,MicroEdition,J2ME)的Web服務(wù)API(WSA)是由JavaCommunityProcess為Java規(guī)范請(qǐng)求172(JSR172)而定義的,這些API是兩個(gè)相互獨(dú)立的可選包,用于遠(yuǎn)程服務(wù)調(diào)用和XML解析。他們是針對(duì)基于連接設(shè)備配置(ConnectedDeviceConfiguration,CDC)和有限連接設(shè)備配置(ConnectedLimitedDeviceConfiguration,CLDC1.0和CLDC1.1)的框架的。為什么用戶應(yīng)該關(guān)注這些呢?因?yàn)镴SR172在設(shè)備層為遠(yuǎn)程服務(wù)調(diào)用和XML解析提供了支持,也就意味著開發(fā)人員不用將這項(xiàng)功能嵌入到每一個(gè)應(yīng)用程序中。本文介紹了遠(yuǎn)程服務(wù)調(diào)用可選包API。

J2ME中的Web服務(wù)

Java2平臺(tái)袖珍版(J2ME)平臺(tái)中的Web服務(wù)是由Java規(guī)范請(qǐng)求172(JSR172)定義的,它與標(biāo)準(zhǔn)Web服務(wù)遵循同樣的規(guī)范、結(jié)構(gòu)以及調(diào)用模型。我們來(lái)回顧一下清單。

與標(biāo)準(zhǔn)Web服務(wù)的比較

JSR172Web服務(wù)API(WSA)遵循下面這些核心Web服務(wù)規(guī)范:

簡(jiǎn)單對(duì)象訪問協(xié)議(SOAP)1.1,定義傳輸和數(shù)據(jù)編碼。

Web服務(wù)定義語(yǔ)言(WSDL)1.1,定義如何描述遠(yuǎn)程服務(wù)。

XML1.0,定義XML標(biāo)記語(yǔ)言。

XMLSchema,毫無(wú)疑問,定義XML模式。

注意JSR172不支持統(tǒng)一描述、發(fā)現(xiàn)和集成(UDDI)2.0規(guī)范,該規(guī)范定義了如何發(fā)現(xiàn)遠(yuǎn)程服務(wù)。

由于有相當(dāng)多的與Web服務(wù)相關(guān)并且涵蓋了不同技術(shù)的規(guī)范出臺(tái),而且越來(lái)越多,Web服務(wù)互操作組織(WS-I)定義了WS-I基本概要1.0(WS-IBasicProfile,Version1.0)來(lái)定義Web服務(wù)規(guī)范的最小集,和一致性規(guī)則一樣,所有的基礎(chǔ)Web服務(wù)提供者和消費(fèi)者都必須遵守該概要。JSR172規(guī)范也遵守WS-I基本概要。

與標(biāo)準(zhǔn)Web服務(wù)具有相同的體系結(jié)構(gòu):

JSR172WSA從客戶端訪問Web服務(wù),從服務(wù)-消費(fèi)者的角度來(lái)看,WSA提供遠(yuǎn)程服務(wù)調(diào)用API(JAX-RPC)以及運(yùn)行時(shí)環(huán)境,從而允許J2ME應(yīng)用程序在Web上消費(fèi)服務(wù),而不是作為服務(wù)生產(chǎn)者(端點(diǎn))來(lái)運(yùn)行。除了這一點(diǎn)差別之外,JSR172WSA體系結(jié)構(gòu)的其它部分與Web服務(wù)的標(biāo)準(zhǔn)體系結(jié)構(gòu)/組織一致,如下圖所示:

WSA高級(jí)體系結(jié)構(gòu)

該高級(jí)體系結(jié)構(gòu)組織如下:

客戶端,Web服務(wù)消費(fèi)者:它是J2ME應(yīng)用程序,例如MIDP或個(gè)人版基于框架的應(yīng)用程序,JSR172存根和支持類,以及JSR172運(yùn)行時(shí)。
網(wǎng)絡(luò):指的是無(wú)線和有線網(wǎng)絡(luò)以及通信協(xié)議,無(wú)線和有線網(wǎng)絡(luò)是Internet的一部分。注意JSR172本身沒有規(guī)定在設(shè)備上使用XML編碼方法,而允許執(zhí)行程序(只要它們對(duì)消費(fèi)者和生產(chǎn)者是透明的)使用更有效的編碼方法,例如在設(shè)備和無(wú)線網(wǎng)關(guān)之間使用二進(jìn)制協(xié)議。
服務(wù)器,Web服務(wù)生產(chǎn)者:它是一個(gè)Web服務(wù)器,通常位于防火墻和/或代理網(wǎng)關(guān)的后面。該服務(wù)器可以訪問后臺(tái)資源。
調(diào)用模型和數(shù)據(jù)流與標(biāo)準(zhǔn)Web服務(wù)相同:

J2ME應(yīng)用程序通過JSR172存根和運(yùn)行時(shí)調(diào)用遠(yuǎn)程服務(wù),通常要通過HTTP和SOAP來(lái)進(jìn)行傳輸。存根和運(yùn)行時(shí)將與遠(yuǎn)程服務(wù)調(diào)用相關(guān)的復(fù)雜部分都隱藏起來(lái)了,包括輸入值和返回值如何編碼并解碼,以及與服務(wù)器進(jìn)行網(wǎng)絡(luò)通信的管理。方法調(diào)用遵循同步請(qǐng)求-應(yīng)答模型,如下圖所示:

圖2-JSR172調(diào)用模型

JSR172調(diào)用模型

*由于調(diào)用是按模塊進(jìn)行的,所以您應(yīng)該把這些調(diào)用分派到不同的執(zhí)行線程中。#p#

消費(fèi)Web服務(wù)

要消費(fèi)Web服務(wù),您必須首先創(chuàng)建服務(wù)調(diào)用存根。讓這些存根來(lái)執(zhí)行任務(wù),例如對(duì)輸入值和返回值進(jìn)行編碼和解碼、與JSR172運(yùn)行時(shí)交互來(lái)調(diào)用遠(yuǎn)程服務(wù)端點(diǎn)。存根通過運(yùn)行時(shí)的服務(wù)提供者接口(SPI)與運(yùn)行時(shí)進(jìn)行交互,這樣通過概述運(yùn)行時(shí)執(zhí)行的詳細(xì)情況,使存根在不同廠商之間的執(zhí)行更便捷。

存根通常是用工具生成的,該工具讀取一個(gè)WSDLXML文檔,文檔描述了將要使用到的Web服務(wù)。同樣的,WSDL文檔通常也是通過工具生成的,該工具讀取接口定義,例如Java接口產(chǎn)生了WSDL文檔。

從我們移動(dòng)開發(fā)的角度來(lái)看,需要消費(fèi)的WSDL文檔通常已經(jīng)存在,您需要做的僅僅是生成JSR172WSA存根。要生成這些存根,您應(yīng)該使用例如J2MEWirelessToolkit2.1存根生成器這樣的工具,如下圖所示:

圖3-生成JSR172WSA存根

生成JSR172WSA存根

該生成器生成存根Java文件,以及相關(guān)的支持類。如下一部分所描述的,它還考慮到了WSDL到Java的數(shù)據(jù)類型映射。

一旦生成了JSR172JAX-RPC存根和支持文件,您的應(yīng)用程序就已經(jīng)被編譯并部署到啟用了JSR172的設(shè)備上了,消費(fèi)Web服務(wù)是很簡(jiǎn)單的而且?guī)缀跏峭该鞯?。您很快就?huì)看到,調(diào)用遠(yuǎn)程方法幾乎和調(diào)用本地方法一樣簡(jiǎn)單。

JSR172JAX-RPC子集API

JSR172遠(yuǎn)程方法調(diào)用API是以基于XML的RPC的J2SEJavaAPI(JAX-RPC1.1)的子集為基礎(chǔ)的。它同樣遵守WS-I基本概要。下面來(lái)詳細(xì)研究一下JSR172JAX-RPC子集API:

它支持:

SOAP1.1。
任何可以傳送SOAP消息的傳輸,例如HTTP1.1,都有一個(gè)定義好的用于SOAP1.1的協(xié)議綁定。
SOAP消息的文字表示代表一個(gè)RPC調(diào)用或應(yīng)答。

下面(是)數(shù)據(jù)類型和相應(yīng)的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。對(duì)基于CLDC1.0的平臺(tái),該數(shù)據(jù)類型映射到String。
xsd:double到double,或Double。對(duì)基于CLDC1.0的平臺(tái),該數(shù)據(jù)類型映射到String。
xsd:string到String。
xsd:base64Binary到byte[]。
xsd:hexBinary到byte[]。
xsd:complexType到基本類型和類類型序列。
xsd:QName到j(luò)avax.xml.namespace.QName。

以XML數(shù)組模式為基礎(chǔ)的基本類型和復(fù)雜類型(結(jié)構(gòu)中包含基本類型或復(fù)雜類型)數(shù)組。

它不支持:

帶附件的SOAP消息。
SOAP消息處理器。
SOAP消息的編碼表示。
服務(wù)端點(diǎn)(不是Web服務(wù)生產(chǎn)者)。
服務(wù)發(fā)現(xiàn)支持(UDDI)。

設(shè)備端沒有規(guī)定XML編碼方法。這樣做是通過允許執(zhí)行程序使用更有效的數(shù)據(jù)編碼方法來(lái)幫助減少網(wǎng)絡(luò)傳輸,例如在設(shè)備和無(wú)線網(wǎng)關(guān)間使用二進(jìn)制協(xié)議(只要這樣編碼對(duì)消費(fèi)者和生產(chǎn)者是透明的)。

JSR172遠(yuǎn)程調(diào)用API包括下面這些包:

javax.microedition.xml.rpc
javax.xml.namespace
javax.xml.rpc
java.rmi(包括確保JAX-RPC相關(guān)型)
注意這些API(有一些異常API,例如RemoteException)不是直接由應(yīng)用程序調(diào)用,相反,應(yīng)用程序調(diào)用生成的存根。上面的API主要是供存根使用的。有關(guān)詳細(xì)信息請(qǐng)參閱JSR172規(guī)范和/或Java文檔。

使用JSR172JAX-RPC調(diào)用遠(yuǎn)程服務(wù)

一旦生成、編譯并部署了JSR172JAX-RPC存根和支持文件,消費(fèi)遠(yuǎn)程服務(wù)就很容易了。事實(shí)上,除了導(dǎo)入RemoteException,完成最少量的JAX-RPC細(xì)節(jié)初始化工作,您的應(yīng)用程序不光是看上去,而且運(yùn)行起來(lái)也和非Web服務(wù)消費(fèi)者應(yīng)用程序一樣。由于有JSR172存根和運(yùn)行時(shí),實(shí)現(xiàn)這種簡(jiǎn)單的應(yīng)用程序是可能的,正如前面提到的,JSR172存根和運(yùn)行時(shí)把與遠(yuǎn)程調(diào)用相關(guān)的大部分細(xì)節(jié)都隱藏了。

要調(diào)用遠(yuǎn)程服務(wù),您首先需要實(shí)例化存根,完成最少的存根初始化工作,然后就是如何編寫調(diào)用存根方法。下面的代碼片斷顯示了如何使用JSR172JAX-RPC調(diào)用遠(yuǎn)程服務(wù)。
 

【編輯推薦】

  1. J2ME Unit單元測(cè)試技術(shù)簡(jiǎn)介
  2. J2ME對(duì)話框選擇功能實(shí)現(xiàn)原理
  3. J2ME數(shù)據(jù)結(jié)構(gòu)中Hashtable和Vector的使用
  4. 調(diào)用Netbeans IDE集成Motorola J2ME SDK5.4.2
  5. 技術(shù)分享 如何整合SE J2ME SDK與eclipse開發(fā)環(huán)境 

 

責(zé)任編輯:佚名 來(lái)源: soft6.com
相關(guān)推薦

2010-10-09 15:07:09

J2MEWeb服務(wù)

2010-09-29 08:57:04

J2ME前景

2010-09-29 10:41:18

J2MEJVM

2009-06-17 11:27:00

setClip方法J2ME

2010-09-29 13:23:12

J2MEPIM

2009-07-09 16:06:10

JDK J2EE J2

2010-09-30 09:56:26

J2ME Polish

2010-09-29 09:19:39

J2ME開發(fā)工具

2009-10-10 13:54:20

OPhone

2011-12-12 16:47:38

J2MESOAP協(xié)議

2011-06-20 06:22:21

ibmdwJavaWeb

2010-09-30 13:39:52

2010-09-30 12:53:00

J2MECSS

2009-03-22 09:38:03

Android移植J2ME

2009-06-23 11:30:16

RMSJ2ME

2010-09-30 13:28:55

J2ME圖形

2009-06-08 21:34:09

J2EEJ2SEJ2ME

2011-09-05 18:57:36

MTKJ2ME

2010-09-29 13:50:31

J2MEJ2SE

2010-09-29 10:15:35

JDKJ2EEJ2SE
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)