j2me与xml查询

  因为Pointbase Lite API非常类似于JDBC,所以在Pointbase Lite API中对表的操作与在JDBC中对表的操作基本一样。考虑到移动设备的运算能力有限,因此本地查询只能查询到两个站点间有直达车的站点信息,如需中转则只能通过远程查询实现。下面的例子显示了查询城市桂林的工学院七星公园线路信息的系统操作流程。

2 运行中的本地查询子系统


4
远程查询的实现

  远程查询分为J2ME客户端的设计和J2EE服务器的设计,其系统流程如图3所示。

3 远程查询流程图


  用户在移动客户端进入查询界面, 通过选择和录入等方式输入查询条件。查询条件通过无线网络发送至J2EE服务器, 在服务器端配置有Servlet接口接收数据,并将查询条件构造成SQL 语言, 查询数据库,然后将查询结果集构造成XML格式的数据返回给移动客户端,移动客户端把XML中所需要数据解析成记录集并显示。

4.1
移动客户端的实现

  客户端在J2ME平台上实现,采用MVC开发模式,主要包括图形界面模块、网络连接模块和XML解析模块,图形界面模块主要由一些视图类组成,网络连接模块和XML解析模块属于模型类,控制器包括一个Controller接口和MobileBusMIDlet类,Controller接口定义了一系列事件常量和一个handleCommand方法,用于处理来自视图的请求,MobileBusMIDlet类实现了Controller接口,作为控制器,它初始化所有的模型类和视图类,并根据来自视图的请求更新模型的状态。

  1、图形界面模块:提供用户选择和录入查询条件的图形界面,如录入城市、起点站和终点站等查询条件,并显示查询结果,方便用户对系统的操作。

  2、网络连接模块:由一个HttpThread类构成,使用Http协议的POST方法传输数据。HttpThread类是一个多线程类,当用户连接网络时系统会启动一个新的线程来连接服务器,而主线程立即返回,这样可以使得用户界面不会堵塞。

  3XML解析模块:对服务器返回的XML格式的数据进行解析,提取用户所需数据并显示。移动设备上的XML分析模型主要有SAXXMLPull和文档模型。本系统采用文档模型作为XML的分析模式,KXML软件包作为XML分析器。KXML是用于CLDC平台上的轻量级的XML分析器,支持XMLPull和文档模型等分析模式。

  XML解析的主要有三个方法:getViaDOMgetDetailsViaDOM1getDetailsViaDOM2。服务器端返回的XML格式的数据为三层的树型结构,getViaDOM方法获得树的根结点,getDetailsViaDOM1方法获得树的中间子结点,即获得城市、起点站和终点站信息,getDetailsViaDOM2方法获得树的叶子结点,即公交线路信息。

4.2
服务器端的实现

  服务器端在J2EE平台上开发,主要包括数据接收模块、三次查询模块、XML封装模块和企业数据库。企业数据库使用Oracle数据库,数据库名为mobilebus,数据库中有一张公交站点信息表,该表和客户端嵌入式数据库中的表的结构一致。三个模块具体实现介绍如下:

  1、 数据接收模块:该模块由一个Servlet类构成,作为客户端和服务器端的接口。该类接收客户端数据,调用查询模块查询企业后台数据库,然后调用XML封装模块将查询结果集封装成XML格式的数据并返回给客户端。

  2、三次查询模块:该模块采用EJB3.0技术设计,由一个消息Bean类构成,该类根据客户端传来的城市、起点站和终点站信息查询企业后台数据库。三次查询的过程如下:若客户输入的当前站点和目的站点刚好有直通车,那么系统就会从数据库中取得该车次的名称并返回;若客户输入的当前站点和目的站点没有直通车的,即一次查询找不到结果的,那么系统就会通过算法从数据库中找到通过转一次车能从当前站点到达目的站点的车次名称及中转站名称并返回;若二次查询仍未能查询到车次信息,那么系统就会通过三次查询算法,从数据库中找到能从当前站点到达目的站点的车次及两个中转站名称并返回。

  3XML封装模块:该模块也采用EJB3.0技术设计,由一个消息Bean类构成。服务器端的XML数据也采用文档模型,即将XML数据封装成树型结构。封装的过程如下:
首先将查询结果集生成一个临时的XML格式的文件,文件结构如下:

<links>
<MobileBus>
<city>
城市</city>
<start>
起点站</start>
<end>
终点站</end>
<line>
<line0>
线路信息1</line0>
<line1>
线路信息2</line1>
<line2>
线路信息3</line2>
……………
</line>
</MobileBus>
</links>

  其中线路信息格式为车次-中转站-车次车次-中转站-车次-中转站-车次。然后用文件流读取文件内容,将XML文档存储在字符串内,以字符串的形式传回给客户端。

  下面的例子显示了查询城市桂林的工学院南溪医院线路信息的系统操作流程。

4 运行中的远程查询子系统


5
数据同步的实现

  移动用户必须依赖后端来跟踪数据库的最新更新,保持移动数据库内容更新的最好办法是通过同步机制。通过数据同步模块,使得移动客户端的嵌入式数据库mobilebus和企业后端数据库保持一致。

  数据同步的核心部件是同步引擎。同步引擎(又名服务器)是移动中间件的一部分,它将后端数据库和它所服务的移动设备连接起来。同步服务器通过使用开放协议(如JDBC或特定于数据库的协议)连接到后端数据库,移动数据库通过专用协议连接到同步服务器。同步移动应用架构如图5所示。

5 同步的移动应用框架


  本系统移动客户端的嵌入式数据库为PointBase Micro,因此同步引擎使用PointBase UniSync,它是完全基于Java的、独立于平台的同步引擎,可以使企业数据库(OracleDB2SysbaseMS SQL Server)和工作组数据库(PointBase Embedded)与PointBase Micro嵌入式数据库同步。UniSync中的关键概念是集线器(Hub)和辐条(Spoke[4]。集线器包含发布程序(publication),该程序指定用于同步(发布)的后端表(或部分表);辐条是由集线器对象创建的,它是在同步服务器上的对象,代表移动设备。每一个辐条都有一个ID。它可以在同一个集线器里通过订阅对象来对同步进行订阅。通过使用辐条ID,移动设备可以连接到相匹配的辐条上,以便对订阅的后端表进行同步。集线器和辐条的架构如图6所示。

6 PointBase UniSync中的集线器和辐条


  数据同步模块的设计分为同步服务器端程序设计和移动客户端程序设计。在同步服务器端,首先创建一个集线器和一个发布程序来进行表的同步,然后创建一个辐条,订阅该发布程序,最后在指定的端口运行该服务器。在客户端,移动设备与服务器联系以获取辐条,并且使订阅的表与该辐条同步。

6
结论

  本文实现了基于J2MEXML的移动公交查询系统,并以此提出了一种企业移动数据库应用系统的开发模式。随着网络和硬件功能的增强,移动设备的处理能力将越来越强,基于J2MEXML的移动数据管理也将得到广泛的应用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值