用于 java 2 平臺袖珍版 (Java 2 Platform, Micro Edition,J2ME) 的 Web 服務 API (WSA) 是由 Java Community PRocess 為 Java 規范請求 172 (JSR 172) 而定義的,這些 API 是兩個相互獨立的可選包,用于遠程服務調用和 xml 解析。
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 服務的標準體系結構/組織一致,如下圖所示:
/** * Entry point to MIDlet, from start or restart states. * @throws javax.microedition.midlet.MIDletStateChangeException */ public void startApp() throws MIDletStateChangeException { // Instantiate the service stub. EmployeeService_Stub service = new EmployeeService_Stub(); // Initialize the stub/service. service._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, serviceURL); service._setProperty(Stub.session_MAINTAIN_PROPERTY, new Boolean(true)); ... display.setCurrent(mainScreen); }