程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 解析用於J2ME開發平台的Web服務API(二)

解析用於J2ME開發平台的Web服務API(二)

編輯:J2ME
首 頁 | 新 聞 | Symbian | Android| Windows Mobile | J2ME | 下載中心 | 游戲策劃 | 招聘與求職 | 購書指南 | 視頻教程 您現在的位置: 開發視界 >> J2ME >> 聯網開發 >> 正文 解析用於J2ME開發平台的Web服務API(二) 作者:佚名    文章來源:IBM DW C. Enrique Ortiz    更新時間:2006-12-7 17:22:31 349

消費 Web 服務

要消費 Web 服務,您必須首先創建服務調用存根。讓這些存根來執行任務,例如對輸入值和返回值進行編碼和解碼、與 JSR 172 運行時交互來調用遠程服務端點。存根通過運行時的服務提供者接口 (SPI) 與運行時進行交互,這樣通過概述運行時執行的詳細情況,使存根在不同廠商之間的執行更便捷。

存根通常是用工具生成的,該工具讀取一個 WSDL XML 文檔,文檔描述了將要使用到的 Web 服務。同樣的,WSDL 文檔通常也是通過工具生成的,該工具讀取接口定義,例如 Java 接口產生了 WSDL 文檔。

從我們移動開發的角度來看,需要消費的 WSDL 文檔通常已經存在,您需要做的僅僅是生成 JSR 172 WSA 存根。要生成這些存根,您應該使用例如 J2ME Wireless Toolkit 2.1 存根生成器這樣的工具,如下圖所示:

圖 3 - 生成 JSR 172 WSA 存根



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

一旦生成了 JSR 172 JAX-RPC 存根和支持文件,您的應用程序就已經被編譯並部署到啟用了 JSR 172 的設備上了,消費 Web 服務是很簡單的而且幾乎是透明的。您很快就會看到,調用遠程方法幾乎和調用本地方法一樣簡單。

JSR 172 JAX-RPC 子集 API JSR 172 遠程方法調用 API 是以基於 XML 的 RPC 的 J2SE Java API (JAX-RPC 1.1) 的子集為基礎的。它同樣遵守 WS-I 基本概要。下面來詳細研究一下 JSR 172 JAX-RPC 子集 API:

它支持:

SOAP 1.1。 任何可以傳送 SOAP 消息的傳輸,例如 HTTP 1.1,都有一個定義好的用於 SOAP 1.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。對基於 CLDC 1.0 的平台,該數據類型映射到 String。
xsd:double 到 double,或 Double。對基於 CLDC 1.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 編碼方法。這樣做是通過允許執行程序使用更有效的數據編碼方法來幫助減少網絡傳輸,例如在設備和無線網關間使用二進制協議(只要這樣編碼對消費者和生產者是透明的)。

JSR 172 遠程調用 API 包括下面這些包:

Javax.microedition.XML.rpc
Javax.XML.namespace
Javax.XML.rpc
Java.rmi (包括確保 JAX-RPC 相關型)
注意這些 API(有一些異常 API,例如 RemoteException)不是直接由應用程序調用,相反,應用程序調用生成的存根。上面的 API 主要是供存根使用的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved