用於 Java 2 平台袖珍版 (Java 2 Platform, Micro Edition,J2ME) 的 Web 服務 API (WSA) 是由 Java Community Process 為 Java 規范請求 172 (JSR 172) 而定義的,這些 API 是兩個相互獨立的可選包,用於遠程服務調用和 XML 解析。
他們是針對基於連接設備配置 (Connected Device Configuration,CDC) 和有限連接設備配置 (Connected Limited Device Configuration,CLDC 1.0 和 CLDC 1.1) 的框架的。為什麼用戶應該關注這些呢?因為 JSR 172 在設備層為遠程服務調用和 XML 解析提供了支持,也就意味著開發人員不用將這項功能嵌入到每一個應用程序中。本文介紹了遠程服務調用可選包 API。
J2ME 中的 Web 服務
Java 2 平台袖珍版 (J2ME) 平台中的 Web 服務是由 Java 規范請求 172 (JSR 172) 定義的,它與標准 Web 服務遵循同樣的規范、結構以及調用模型。我們來回顧一下清單。
與標准 Web 服務的比較 JSR 172 Web 服務 API (WSA) 遵循下面這些核心 Web 服務規范:
簡單對象訪問協議 (SOAP) 1.1,定義傳輸和數據編碼。
Web 服務定義語言 (WSDL) 1.1,定義如何描述遠程服務。
XML 1.0,定義 XML 標記語言。
XML Schema,毫無疑問,定義 XML 模式。
注意 JSR 172 不支持統一描述、發現和集成 (UDDI) 2.0 規范,該規范定義了如何發現遠程服務。
由於有相當多的與 Web 服務相關並且涵蓋了不同技術的規范出台,而且越來越多,Web 服務互操作組織 (WS-I) 定義了 WS-I 基本概要 1.0 (WS-I Basic Profile,Version 1.0) 來定義 Web 服務規范的最小集,和一致性規則一樣,所有的基礎 Web 服務提供者和消費者都必須遵守該概要。JSR 172 規范也遵守 WS-I 基本概要。
與標准 Web 服務具有相同的體系結構:
JSR 172 WSA 從客戶端訪問 Web 服務,從服務-消費者的角度來看,WSA 提供遠程服務調用 API (JAX-RPC) 以及運行時環境,從而允許 J2ME 應用程序在 Web 上消費服務,而不是作為服務生產者(端點)來運行。除了這一點差別之外,JSR 172 WSA 體系結構的其它部分與 Web 服務的標准體系結構/組織一致,如下圖所示:
圖 1 - WSA 高級體系結構
該高級體系結構組織如下:
客戶端,Web 服務消費者:它是 J2ME 應用程序,例如 MIDP 或個人版基於框架的應用程序,JSR 172 存根和支持類,以及 JSR 172 運行時。
網絡:指的是無線和有線網絡以及通信協議,無線和有線網絡是 Internet 的一部分。注意 JSR 172 本身沒有規定在設備上使用 XML 編碼方法,而允許執行程序(只要它們對消費者和生產者是透明的)使用更有效的編碼方法,例如在設備和無線網關之間使用二進制協議。
服務器,Web 服務生產者:它是一個 Web 服務器,通常位於防火牆和/或代理網關的後面。該服務器可以訪問後台資源。
調用模型和數據流與標准 Web 服務相同: J2ME 應用程序通過 JSR 172 存根和運行時調用遠程服務,通常要通過 HTTP 和 SOAP 來進行傳輸。存根和運行時將與遠程服務調用相關的復雜部分都隱藏起來了,包括輸入值和返回值如何編碼並解碼,以及與服務器進行網絡通信的管理。方法調用遵循同步請求-應答模型,如下圖所示:
圖 2 - JSR 172 調用模型
由於調用是按模塊進行的,所以您應該把這些調用分派到不同的執行線程中。