移动客户端的Web服务-Java ME/JSR-172 独家!
随着Web服务在IT领域的普及,以同样的方式为每个可能的系统提供和处理XML类型的负载的方法已经不新鲜了,更大的挑战来自于移动应用的领域。下面,我们将分析Java ME(Java Micro Edition) 如何处理Web服务的问题。
随着Web服务在IT领域的普及,以同样的方式为每个可能的系统提供和处理XML类型的负载的方法已经不新鲜了,更大的挑战来自于移动应用的领域。下面,我们将分析Java ME(Java Micro Edition) 如何处理Web服务的问题。
移动客户端是一组特殊的设备,包括个人数字助手(PDA)和移动电话。尽管它们总在不停地访问重要数据,但却受到内存、显示和高延迟网络的不利影响。看看早期这种设备使用的技术,就能知道为什么在这个领域需要特别考虑Web服务了。
时至今日,HTML依然在标记非常多的互联网上的网页,但却不能没大多数移动设备使用。在这个领域,需要使用WML和HDML来处理PDA和移动电话的很多问题。因此,这说明很多互联网上的技术不见得适用于移动环境。
Java ME Web services /JSR-172解决了移动应用中面临的两个问题:从Java移动设备中访问SOAP/XML Web服务,以及处理这种服务发送的XML消息。在这种情况下,JSR-172被专门集中在客户端处理Web服务,而不能从移动设备发布服务。
如果你有从Java客户端使用Web服务的经验,那么你就应该能很容易地使用Java ME的Web服务。因为XML处理和Web服务访问都是基于JAXP和JAX-RPC的子集API的,而它们在完全Java的环境中执行着同样的任务。
这种JAXP和JAX-RPC的子集API的特别之处在于它只有35kb,这很适合于Connected Limited Device Configuration (CLDC)中的Java ME。尽管Java ME和标准Java 的JAX-RPC几乎同样的大小,但在此之上的JAXP插入类却非常不同。因为在标准Java中具有访问全套XML处理的功能,而由于平台大小的限制,这些功能对移动应用过多了。
让我们来讨论一下功能方面,对比Java ME的JAX-RPC和标准Java实现中的JAX-RPC。前者缺少对以下功能的支持,但这些功能在后者中是具备的:
- 不支持服务终端,即设备不能是Web服务提供者。
- 不提供服务发现(UDDI)
- 不支持附件的SOAP消息
- 不支持SOAP消息处理器
正如前面所说的,Java ME的JAXP实现与标准Java在处理XML时不同的是:
- 不支持文档对象模型(DOM)
- 不支持可扩展样式表语言转换(XSLT)
现在,我们来看看Java ME的JAX-RPC API,看它如何调用互联网上的一个Web服务的。要记住,这只是遵循Mobile Information Device Profile (MIDP)规范的Java ME应用程序的一部分。和其它软件应用一样,一个Java ME应用程序必须包括业务逻辑类、用户接口和应用状态管理以及其它代码。这些问题超出了本文的范围,因为它们与Java ME相关。因此,你可以参考Java ME's site 或 Sun Wireless Toolkit ,它是开发Java ME应用的一种环境。
首先,创建一个Java ME Web服务,从服务提供方通过自己WSDL合约生成一个Java stub。这一步与通过WSDL合约获得某个语言特定的接口来发布特殊服务的标准Java Web服务很类似。但是,在Java ME中,stub需要用JSR-172来构建,而Sun Wireless Toolkit提供了这样一种工具。
一旦有了stub,就需要构建一个具体的类,表单1.1显示了一个天气预报应用的Java ME Web服务的类。
|
Listing 1.1 Java ME Midlet/class using web services. import java.rmi.RemoteException; // Define web service url and input data // Generate WeatherService stub // Configure stub /** More code - cut out for brevity */ try { // Create a Form to display the weather. /** More code - cut out for brevity */ display.setCurrent(form); } |
注意,我们使用了一些javax.microedition类,它们是Java ME核心的一部分,带有java.rmi.RemoteException的异常。使用JAX-RPC的代码在stub中,被Web服务 WSDL合约创建。所有这些工作都在开发人员的工作台上,从获得WSDL合约一直到打包应用程序。一旦移动Web服务在工作台模拟器上被彻底调式和测试后,只在最后一步才真正涉及到移动设备。
最后,总结我们对在很多组织中使用Web服务的Java ME功能的观点。有了它,你现在可以提供给你的用户同样的Web服务数据,而不用管他们是在PC机旁还是在使用移动电话或者PDA了。
- 本文关键词:

