用于 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); }