基于JavaME与Web Services的企业移动应用研究

[摘 要] 从企业移动业务拓展角度出发,介绍了一种基于JavaME与Web Services的系统架构,实现了服务端信息点播服务的构建与发布机制,并参照JSR 172( JavaME Web Services Specification 172),研发了支持远程Web服务访问的移动客户端应用程序,以期为企业构建移动信息服务平台提供一种现实、可行的思路。

[关键词] 企业移动应用; JavaME;Web服务; JSR 172

[中图分类号]F270.7;TP311[文献标识码]A[文章编号]1673-0194(2009)01-0062-03

1 引 言

随着移动通信技术的高速发展,以及移动设备的广泛普及,以手机为代表的移动产品软硬件环境也变得纷繁复杂,如手机操作系统就包括Symbian、Palm OS、Linux、Windows Mobile等,使得特定移动平台开发的解决方案在部署时存在移植性问题,只能局限于小范围应用。同时,由于厂商和开发者对企业级应用的关注度日益提高,探索“如何使企业服务覆盖到移动客户端,而不仅仅是Web浏览器与PC客户端”,以及“如何使移动客户端接入原有企业服务的成本最低”等问题就显得尤为必要。据一份调查报告显示,现在每出厂100台移动电话中,有87台是支持Java的[1]。因此,基于Java平台在移动电话上的广泛部署,以及Java应用程序“一次编写,到处运行”的优点,开发支持Web服务的移动客户端应用程序,连通企业提供的Web服务,有助于降低企业移动信息服务系统开发成本,提高信息资源利用率。

2JavaME平台上的Web服务

2. 1系统架构

JSR 172规定了标准化客户端技术,允许 JavaME应用程序在典型Web服务架构上使用远程服务,如图1所示。

系统采用MVC软件设计模式,由用户层、表示层、应用层和数据层组成的4层客户服务器体系结构,很好地表达用户与系统的交互过程,有利于软件的工程化管理,具有很好的扩展性与灵活性。该Web服务架构由3个元素构成:①WSA(Web Services Architecture)无线设备上的网络感知应用程序。该应用程序包括使用JSR 172运行库与网络进行通信的JSR 172存根。②无线网络和Internet以及对应的通信和数据编码协议,包括二进制协议、HTTP 以及 SOAP/XML。③Web 服务器,扮演服务提供者的角色,通常在一个或多个防火墙和代理网关后面。Web 服务器通常提供对专用网络上后端应用程序和服务器的访问[2]。

2. 2JavaME对Web服务的远程访问

JSR 172的发布,把Web服务扩展到了Java ME,通过定义一个XML解析器,弥补Java ME不能解析XML的不足。基于JSR 172的应用程序本身是一个基于移动信息设备配置文件(Mobile Information Device Profile,MIDP)或个人基础配置文件(Personal Basis Profile,PBP)的智能客户机,不仅可以使用JAXP子集API来处理XML文档,而且还可以使用JAX-RPC子集API来实现Web服务。对于像手机、PDA这样的移动设备,应用程序和JSR 172存根通常驻留在设备内存中,而所有JSR 172元素连同基础配置文件和配置一起嵌入到设备中。

JavaME客户端实现过程包括获取WSDL文档、生成JAX-RPC存根类、通过该存根类实现对Web服务的远程访问,具体步骤如图2所示。

3 实例分析

本文研究以移动信息点播服务为例,将移动客户端MIDlet(是指运行在MIDP设备上的应用程序)分为主程序与信息点播服务两大模块。其中,主程序模块负责同Web服务器的数据交互,获取服务器传送的xml文件并解析。信息点播服务模块负责显示主程序模块所解析的具体信息。

实现过程主要包括客户端界面实现与服务端Web服务部署两部分。客户端基于Java ME技术,服务端采用数据源和Web Services技术提供服务。

3. 1服务端服务创建与发布

服务端的服务是通过Web Services技术提供服务。部署Web服务时,采用Resin服务器,选用Glue来配置Web Services环境,实现客户端与服务器端连接、通信以及数据交互。

(1)在服务端创建3个类:DataSourceSupport类、OrderNews类和ShowNews类,为客户端提供服务。其中,DataSourceSupport类用于提供数据源的连接;ShowNews类则是根据用户选择的信息标题,返回具体信息内容;OrderNews类是根据用户选择的信息查看类型检索数据库,并返回检索到的信息标题,该类的核心代码如下:

public class OrderNews{//检索信息标题

private DataSource ds;

public OrderNews() {

//定义DataSourceSupport类对象建立数据库连接

DataSourceSupport dss = DataSourceSupport.getInstance();

ds = dss.getDataSource();

}

public String[] getTitle(String k,String date) {

//根据消息类型检索数据库,并返回结果

String sql = null;

String key = k;

sql = "select * from newsinfo where title like " %" + key + "%" ";

if (sql == null) {

return new String[0];

} else {

//调用searchBySql()函数执行sql语句,并返回结果

return searchBySql(sql);

}

……

}

(2)创建两个与提供Web Services服务类名一致的xml文件OrderNews.xml和ShowNews.xml,用于描述提供的服务。OrderNews.xml文件的主要代码如下:

infoserver.OrderNews

newsinfo service

yes

5

mime

其中,