提出用手机嵌入式Java(J2ME)和服务器端Java(J2EE)实现WebServices架构的位置服务解决方案,对其关键技术进行了探讨,提出一种完整的技术路线。
1 引言
当前人们对信息的需求越来越强烈,据统计,有80%的信息与位置有关。为了寻找某个人、某个地点,常常耗去人们大量的精力,因此,随着社会发展,生活节奏的加快,节省时间、提高效率已经成为一种很普遍的追求,位置信息因此也成为人们最渴求的信息之一。另一方面空间定位技术和移动通讯技术的迅速发展也使快捷传递人们的地理位置成为可能。在市场和技术双重驱动之下,LBS(位置服务)随之发展起来。LBS,即"基于位置的服务"(Location-Based Service),是通过移动终端和无线网络的配合,确定出移动用户的实际地理位置,从而提供用户需要的与位置相关的信息服务。位置服务也成为学术界的一个研究热点。
本文提出了一种基于WebServices架构的位置服务解决方案。利用支持J2ME的手机作为客户端,服务器端选用J2EE平台。在服务器端实现复杂的业务逻辑和地图查询定位功能。在客户端使用微缩版的XML解析器进行解析。客户端和服务器端通过HTTP,使用WebServices技术来传输和交换信息,实现个人手机终端的位置服务。

2 LBS系统结构
2.1 系统工作流程
一个完整的LBS系统是由四部分组成,:空间定位系统、位置服务中心、通信网络以及移动终端。

LBS系统工作的主要流程是:用户通过移动终端发出位置服务申请,该申请经过电信的各种通信网关以后,为位置服务中心所接受;经过审核认证后,服务中心调用定位系统获得用户的位置信息(另一种情况是,用户配有GPS等主动定位设备,这时可以通过无线网络主动将位置参数发送给服务中心),服务中心根据用户的位置,对服务内容进行响应,如发送路线图等,具体的服务内容由内容提供商提供。上图就是该过程的主要信息流程。
2.2 位置服务平台网络结构
位置服务中心是LBS系统的核心。负责与移动终端的信息交互和各个分中心的网络互连,完成各种信息的分类、记录和转发以及分中心之间业务信息的流动,并对整个网络进行监控。服务中心的逻辑结构示意图如下:
中心平台在逻辑上可以分为商务应用和地理服务应用。商务应用负责和用户的交互及用户管理;地理服务应用负责根据用户的地理位置响应或者主动发布位置服务。
3 关键技术研究
3.1 采用WebServices技术实现LBS
WebServices是一种专门为不同的应用之间的互操作而设计的软件体系结构。它在分布平台上实现业务逻辑,包装成完整Web服务,并描述成WebServices通用的语言格式(WSDL),然后通过一个服务注册中心(UDDI)来收集、管理、发布这些服务。其他客户端系统通过UDDI找到服务之后,使用SOAP消息,基于HTTP传输来实现对服务的调用。典型的应用模型如下图所示:服务提供者到注册中心(服务中介)发布服务,服务请求者到注册中心查询到想要的服务后就与服务提供者建立调用。

在LBS系统中,因为移动终端的计算能力有限,所以要在J2EE服务器端实现大部分计算功能,并且要实现J2ME终端对J2EE服务器端服务的调用。采用WebServices技术之后,可以把某个位置服务发布成特定的服务,然后在J2ME端进行调用。Web服务彼此是松散耦合的,比较适合跨系统跨平台的信息交换。连接中的任何一方均可更改执行机制,却不影响应用程序的正常运行。WebServices可以把分布在不同网络之间的各种地理信息资源有效地通过编程手段整合在特定的应用中。WebServices就相当于过去我们编程中常常调用的API函数和在面向对象系统中常用的部件接口,只不过API一般存在于单个程序的不同模块中,部件接口存在于相同机器的不同部件中,而WebServices则将无所不在地分布在网络上。WebServices远远突破了分布式对象系统的局限性,网络上的任何资源都可以被利用。因此WebServices特别适合于应用在LBS这种面向公众的大型信息服务上。
3.2 可升级矢量图形(SVG)
地图文件在无线网络上的传输是系统的一个关键问题。如果采用传统的栅格地图分布式模型,虽然在客户端不需要任何额外程序,可以真正做到瘦客户端,但是这样对图像的处理非常耗时。因为在客户端只能读得x,y坐标,进行地图缩放、平移和选择等操作都要传递x,y坐标到服务器端处理,生成新的栅格图传递到客户端显示,每次发送一个消息给服务器时,服务器都需要查找数据库,执行操作,生成GIF格式或JPEG格式的图像,然后再传送给浏览者,这给服务器和网络传输的负担很重,很不适合无线网络的传输。
本系统决定采用矢量图形分布式模型。地图数据组织形式采用SVG矢量图形。整个模型的任务分配是:应用服务器负责商务逻辑和复杂空间分析处理,数据库服务器负责数据库管理和服务。其它任务由J2ME客户端完成。应用服务器进行空间分析后生成SVG文件,然后传递给客户端,客户端获得SVG文件后对地图进行重绘。在客户端,用户所见到的和操作的是矢量的图形,而非栅格数据和静态图像,并且与主数据库无缝连接。因而,在客户端进行的漫游、放大、缩小、查询和分析等基本操作均在客户机实现完成,无须应用服务器和数据库服务器参与。这样既减轻了服务器和网络传输的负担,又充分利用了服务器和客户机的资源。
4 系统方案设计和实现
我们为系统设计了一套实现流程,在客户端使用具有一定计算功能的J2ME平台,把请求包装成SOAP请求,然后通过无线网络传递给服务器端的WebServices系统。服务端接收到请求后,解析具体的业务,然后调用EJB业务组件。我们用组件化的J2EE技术,在服务器端实现位置服务主要功能,调用结果解析成SVG描述文件,然后作为结果返回。客户端接收到结果后,在客户端实现SVG图形重新描绘,与服务器交换的仅仅是位置信息。系统结构如下:
我们用一个例子来详细描述系统的具体实现过程。用户通过手机上的J2ME程序向位置服务中心请求从用户当前位置到目的地的最短路径,并希望服务器返回的结果能够直观的以地图显示在手机屏幕上。
4.1 采集位置信息与使用Web Services传到服务器端
J2ME客户端通过蓝牙GPS设备采集到用户当前的位置信息,然后把最短路径请求(起始点和请求类别)包装成一个SOAP信息,通过GPRS无线网络,使用Web Services技术传到服务器端。
J2ME客户端生成一个请求信封(Envelope),示例代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body>
<request_mappath>
<form>
<x_position>121232</x_position>
<y_position>232322</y_position>
</from>
<to>
<destination>天安门广场</destination> </to> </request_mappath>
</soap:Body>
</soap:Envelope>
4.2 业务逻辑服务的采集和发布
服务器端的WebServices负责接收和解析客户端的请求,然后调用注册中心(UDDI)所发布的相应服务。服务端使用远程方法调用(JAX-RPC)技术来实现这种服务和应用之间的对话。通过JAX-RPC的包装,服务器可以把具体的应用逻辑分离出来,作为EJB组件单独实现,最后进行服务的包装发布。当系统接收到客户端的最短路径请求之后,就会调用路径分析的相应服务来处理。
4.3 服务器端应用逻辑组件的实现
服务器端使用与服务绑定的EJB来实现主要的计算功能。服务器端实现了SVG文档的动态生成、复杂路径分析规划服务、邻近查询、地名查询等服务。在本例中EJB负责使用最短路径算法查找两地之间的最短路径后并且动态生成SVG文件,然后把SVG文件返回给请求端。采用EJB技术实现应用逻辑的优点在于能够充分利用J2EE应用服务器来优化和管理EJB组件的生命周期和并发请求,支持大数据量的并发请求处理
4.4 客户端实现
客户端接收到SVG文件之后,把SVG文件解析成地图,还可以实现放大、缩小、漫游等地图服务功能。在J2ME上,对XML的解析我们采用开放源代码的Ksoap技术,对SVG文件的处理采用开放源代码的TinySVG项目。
下面给出一个客户端实现的效果图:
4.5 实验环境配置
| 客户端J2ME | J2ME | CLDC 1.0 MIDP 2.0 | |
| SOAP | kSOAP 2.0 | ||
| Xml | parser kXML 2 | ||
| 服务器端 | Server | OS | Linux 9.0 |
| WebServices | Server | ASIX 1.1 | |
| J2EE | Server | Tomcat 5.0 | |
| Container | Jboss 4.2 | ||
| Persistence | Database | Oracle 9I | |
5 结论
个人位置服务已经成为定位导航应用重要的新兴市场。在市场的驱动下位置服务系统正日益成为面向超大规模用户群的公众定位服务接入平台。在这种背景之下,能容纳大用户并发访问的网络结构和地图在无线网络上的传播方式成为当前研究的热点。本文利用JAVA和SVG技术,基于WebServices体系实现了一个开放的LBS系统,结果证明这是一种可行的方案,并且具有一系列的优点:采用WebServices技术有利于跨系统跨平台的大规模的信息交换;采用SVG格式文件作为地图的描述语言减轻了无线网络传输的负担。采用java技术(J2ME和J2EE)能够兼容多种用户终端,并充分利用了其组件化设计的特性,提高了系统的可复用性和可扩展性。
6 关于作者
孙运动、顾明 清华大学软件学院,北京 100084
刘长征清华大学土木工程系地球空间信息研究所,北京 100084
(THE END)

