基于服务器推送技术的机动车识别系统的.doc

上传人:来看看 文档编号:3626139 上传时间:2019-09-18 格式:DOC 页数:8 大小:187.50KB
返回 下载 相关 举报
基于服务器推送技术的机动车识别系统的.doc_第1页
第1页 / 共8页
基于服务器推送技术的机动车识别系统的.doc_第2页
第2页 / 共8页
基于服务器推送技术的机动车识别系统的.doc_第3页
第3页 / 共8页
基于服务器推送技术的机动车识别系统的.doc_第4页
第4页 / 共8页
基于服务器推送技术的机动车识别系统的.doc_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于服务器推送技术的机动车识别系统的.doc》由会员分享,可在线阅读,更多相关《基于服务器推送技术的机动车识别系统的.doc(8页珍藏版)》请在三一文库上搜索。

1、精品论文基于服务器推送技术的机动车识别系统的设计与实现杨九临,王柏5(北京邮电大学计算机学院,北京 100876) 摘要:为满足机动车识别系统对于车牌信息的实时性要求,在分析传统 Web 应用程序客户 端请求、服务器响应工作模式不足的基础上,提出全逆向数据推送解决方案。通过介绍服务 器推送技术原理、机动车识别系统的运行机制以及系统关键环节上所采用的技术和处理方 法,阐述全逆向数据推送解决方案的设计和实现过程,说明其在提高数据实时性方面的实际10意义。关键词:服务器推送;Web 应用程序;LCDS;Flex中图分类号:TP311Design and Implementation of Serve

2、r-push-based Vehicle15Recognition SystemYANG Jiulin, WANG Bai(Beijing University of Posts and Telecommunications, Beijing 100876)Abstract: To meet the demand for real-time license plate information of vehicle recognition system, according to the analyses of traditional Web application on its deficie

3、ncy of adopting the20work mode of request/response, this paper proposes the solution of full reverse data-push. By introducing the principle of server-push technology, the operating mechanism of vehiclerecognition system and the technologies and approaches adopted in the key links of vehicle recogni

4、tion system, this paper explains the design and implementation process of full reverse data-push and its practical significance.25Keywords: server-push; Web application; LCDS; Flex0引言随着社会经济的发展,城市机动车保有量及交通出行量连年持续增长,机动车已成为市 民出行的主要交通工具之一。机动车事故、违章逃逸、假牌、假证及机动车盗抢等以机动车30为中心的事件大量涌现,为有效管理机动车辆、尽量遏制违章行为,通常使用机动

5、车识别系 统协助警员工作,即,在城市中布设一定数量的车牌识别监控点,利用车牌识别技术实时监 控各路段或路口的机动车通行情况,并将各监控点采集的车牌及图片等基础数据通过通讯网 络实时传送至服务器,再由服务器端程序进行数据分析和比对,最后将数据处理结果发送至 客户端,完成对被盗抢机动车、涉案嫌疑机动车、交通肇事逃逸车辆、交通违章等黑名单车35辆的实时监控与预警。 在实际应用环境当中,由于警员位置较分散且不固定、使用的客户端类型多样,为解决程序可移植性、版本一致等问题,一般采用 Web 系统结构进行功能实现。然而传统 Web 应 用程序以客户端请求、服务器响应的模式工作,即使服务器端已有新增数据,若

6、没有客户端 请求到来,就无法在第一时间将数据发至客户端完成预警,因此也就不能满足系统的数据实40时性要求。服务器推送技术的出现使客户端获取实时数据成为可能。本文旨在阐述如何整合 Oracle作者简介:杨九临,(1979-),男,工程师,计算机软件与理论。通信联系人:王柏,(1962-),女,教授,电信系统软件、分布计算技术、数据挖掘、智能信息处理。E-mail:- 8 -内置 Java 存储过程和触发器技术、Java 技术、LCDS/BlazeDS 数据服务以及 Flex 富客户端技术等成熟框架和技术,来构建一种全逆向数据推送解决方案,从而满足机动车识别系统的 实时性要求。451服务器推送技术

7、介绍1.1服务器推送技术来源传统的 Web 应用程序是基于客户端请求和服务器响应模式的,客户端与服务器之间利 用 HTTP 协议进行通信。HTTP 协议(HTTP/1.0)最初设计成一种无连接、无状态协议1, 其通信过程如下:由客户端向服务器发出建链请求,得到服务器确认后双方建立 TCP 连接,50随后客户端通过此 TCP 连接向服务器发送业务请求,服务器做出响应,之后释放连接2。 因此服务器端的数据发生变更时,服务器无法主动通知客户端反映这些变化,用户自然也就 无法获得实时数据。然而在某些特定领域,如股票交易市场中,用户对数据的实时性往往要 求很高,如果依靠用户手动刷新页面发送请求或者定时轮

8、询服务器的变更数据,不仅会带来 糟糕的用户体验,同时加重了服务器的负担,并且也没能有效地解决数据实时性问题。在这55种情况下,服务器推送技术应运而生。1.2服务器推送技术原理和分类简要来说,服务器推送技术就是服务器主动向客户端发送数据,按照其实现原理的不同, 大致可分为基于 HTTP 协议的推送技术和基于 TCP Socket 的推送技术。1.2.1基于 HTTP 协议的推送技术601.简单轮询和信息捎带(Simple polling& piggybacking)3简单轮询是指客户端每隔一个固定的时间段通常为数秒就向服务器发送一次 请求,若其间服务器端发生数据或资源变更,则服务器将其返回至客户

9、端,否则返回空消息。 信息捎带是在简单轮询基础上作出的改进,其工作原理是:当客户端在两次轮询请求之间有 消息需要发送到服务器端时,它会借此额外生成一次轮询请求;而服务器端在正常响应客户65端发来消息的同时,也对轮询请求做出响应,若有数据或资源变更,便捎带一并发回至客户 端。2.长轮询(Long polling)3长轮询技术的协议基础是新版本的 HTTP 协议(HTTP/1.1),HTTP/1.1 允许持久连接, 即客户端和服务器能够在同一条 TCP 连接上交换多个请求/响应消息1。其工作原理如下:70首先客户端以异步方式向服务器发出长轮询请求;其次服务器收到请求后,以非阻塞方式进 行处理若目前

10、没有可供返回的更新数据,则服务器保持住与客户端的连接,转而处理其 它业务;之后当服务器端的数据或资源发生变更,则服务器通过之前保持的连接将更新数据 发回至客户端;最后,客户端收到服务器响应,双方释放连接,一次长轮询周期结束,客户 端立即发送下一次长轮询请求。753.流方式(Streaming)3流方式与长轮询类似,也是基于 HTTP/1.1 提供的持久连接,服务器通过此连接不断向 客户端发送消息4。不同之处是采用长轮询请求方式的客户端在收到服务器响应后会关闭连 接,而采用流方式的客户端会一直保持与服务器的连接,不论其间收到多少服务器响应,只 有在需要的时候它才会主动关闭连接。808590951

11、001051.2.2基于 TCP Socket 的推送技术Web 应用程序的通信协议基础是 HTTP 协议,由于协议本身的原因造成了客户端获取 实时数据的困难,因此解决这一问题的另一种思路就是绕开 HTTP 协议,使用其它手段传递 数据,最直接的方法就是使用 TCP Socket。使用 TCP Socket 实现推送技术的基本思路就是在页面中加载的插件,由它作为 Socket 的一端,与 Web 服务器构成双向通信管道,完成实时数据的传递,从本质上来说,这更像 是传统桌面应用程序的通信方式。其中较为典型的代表就是在 Flex 框架下开发的 Web 应用 程序,其编译后的客户端应用程序就是以 s

12、wf 文件形式插入到页面中的。1.3Flex 服务器推送技术Flex 服务器推送技术是基于 LCDS 提供的消息服务来实现的5。LCDS(LiveCycle Data Service Enterprise Suite)是 Adobe 面向企业级用户推出的数据服务组件,是一种工作流和业 务规则引擎,帮助企业自动完成工作流程6。BlazeDS(Blaze Data Service)是面向普通用户, 经过裁剪后的 LCDS6。二者都是作为中间件,将前端组件与 Web 服务、数据库服务器、消 息服务等连接起来。在面向服务架构(SOA Service-Oriented Architecture)中,服务

13、器端向 客户端提供服务,当客户端需求访问这些服务时,就需要借助 LCDS 向服务器提出请求。下 图描述了 LCDS 的架构。图 1 LCDS 架构Fig. 1 LCDS architectureLCDS 消息服务采用发布/订阅模式完成服务器与客户端之间的数据交互,它管理着一 些 Flex 客户端可以订阅或发布的目标地址。Flex 提供了 Producer 和 Consumer 这两个组件, 用来向目标地址发送或订阅消息。如果要订阅消息,可以使用 Consumer 类的 subscribe()方 法。当有消息发送到所订阅的目标地址时,Consumer 上就会触发 message 事件。 消息传递

14、 的目的地址是在 Flex 应用根下的 messaging-config.xml 文件中配置的。一个目的地址配置的 关键元素是客户端和服务器之间交换数据的通道。LCDS 提供了多种类型的数据通道,涵盖 了前述全部推送方式。2系统设计和实现1101151201252.1总体结构设计根据机动车识别系统需求,布设在各处的车牌识别监控点将采集到的车牌信息发送至数 据服务器保存到数据库中,并且将数据副本发往 Web 服务器,以便警员通过 Flex 客户端获 取车牌信息。在此过程中,为保证警员获取数据的实时性,不仅需要利用服务器推送技术将 数据推至客户端,还需要在保存数据时,数据库能够在第一时间主动向 W

15、eb 服务器传递车 牌信息。因此,如下图所示,全逆向数据推送过程是一个由车牌识别监控点发起,终止于 Flex 客户端的数据传递过程,中间的每一个节点都能够主动向下一个节点发送数据,而不是 被动等待下游节点发出查询请求后再做出反应。图 2 全逆向数据推送过程Fig. 2 Full reverse process of data-push数据库使用 Oracle11g,利用 Java 存储过程以及触发器等技术,编写数据库内置网络客 户端程序,与 Web 服务器端的守候程序建立 Socket 连接,并利用此连接传递车牌信息;服 务器端程序的主要功能包括监听来自数据库内部的 Socket 连接建立请求

16、、接收数据库传来 的车牌信息、利用 Hibernate 框架提供的 ORM(Object-relational Mapping)技术7完成数据 抽象并提供针对数据库的 CRUD 操作、利用 LCDS 消息服务完成向客户端的数据推送,等 等;使用 Flex 技术开发客户端程序,除完成必需的人机交互界面及部分应用逻辑外,还要 向 LCDS 消息服务订阅车辆信息。系统整体架构如下图所示:1302.2数据库端程序图 3 系统总体结构Fig. 3 System architecture如前所述,机动车识别系统中的数据库端要起到网络客户端的作用,主动与 Java 服务135140145器端建立 Socke

17、t 连接并传递车牌信息,这需要实现数据触发功能,以及数据库内部与外界的通信功能。从 Oracle8i 版本 1(Oralce8.1.5)开始,Oracle 提供紧密集成的 Java 虚拟机(JVM), 支持 Java 存储过程,便于开发数据库端的业务逻辑,也为实现上述功能提供了解决途径。 数据库端程序包括 Java 存储过程和触发器两个部分:2.2.1Java 存储过程首先创建 Java 源,在源文件中定义网络客户端类,并在其中定义公有静态类方法 init() 和 sendInfo(),Java 源由 Oracle 内部集成 JVM 编译成字节码后,供存储过程或其它程序调 用8。init()方

18、法的作用是在数据库启动后向服务器指定端口发送 Socket 连接建立请求,并在 连接建立成功后使用 Java 输入输出包中的过滤器类对通信管道进行包装,以备后续使用。 init()方法由数据库服务器上运行的车牌信息入库程序启动时调用,以保证当有数据传来时, Socket 通信管道已经处于就绪状态。程序片段如下:public static void init()try 150/建立 Socket 连接socket = new Socket(InetAddress.getByName(*), *);/对 Socket 输出流进行包装output = new PrintWriter(new Buff

19、eredWriter(new OutputStreamWriter(socket.getOutputStream(), true); catch (IOException e) e.printStackTrace();155160165170sendInfo()方法利用之前包装好的 Socket 输出流,将车牌信息以字符串的形式发送至服 务器端。关键程序语句如下:String info =*;/车牌信息字符串output.println(info);随后创建 Java 存储过程,调用 sendInfo()方法。语句如下:create procedure lava.sendInfo() as l

20、anguage java name Client.sendInfo();2.2.2触发器为实现数据触发功能,需要利用 Oracle 提供的触发器技术。触发器相当于一种事件监 听和处理机制,当表中数据发生变更时,就会触发相应的处理动作8。由于本系统要求车辆 信息表中有新增数据时立刻将其副本传递给 Web 服务器,因此要定义监听数据插入动作的 触发器。触发器声明如下:create trigger lava.vehicle_insert_tri before insert on lava.vehicle for each row;当表中有数据插入时,触发器便调用前述 Java 存储过程 lava.s

21、endInfo(),向 Web 服务器 发送车辆信息副本。2.3服务器端程序服务器端的主要功能模块包括 LCDS 消息服务、与数据库端程序进行通信的网络守候程 序以及 Hibernate 数据抽象模块。其中数据抽象模块主要由 Hibernate 技术生成的数据库表的精品论文175映射类(POJO)以及针对数据库表的操作类(DAO)构成,因其未直接参与逆向推送过程,本文不对其展开介绍。1801851901952002.3.1LCDS 消息服务LCDS 是一些 Java 组件的集合,随应用程序一同部署,作为中间件将 Flex 客户端与 Java 服务器连接起来。LCDS 通过 xml 配置文件向调

22、用者提供访问接口,其中消息服务的配置文 件是 messaging-config.xml。文件中定义了具体的消息适配器类:消息订阅地址:数据通道使用的推送方式:以及其它一些消息服务相关设置。消 息适配 器类是 完成消 息传递 的具体实 现类, 它继承 自 LCDS 组件包 中的 ServiceAdapter 类,为实现自定义数据推送过程以及规约数据格式,需要对类中的 invoke() 方法进行覆写。invoke()本身是一个回调函数,当服务器端收到数据库传来数据时,invoke() 会被调用,将数据推送至客户端。程序片段如下:public Object invoke(Message arg0)

23、infoMsg = (AsyncMessage)arg0; infoMsg.setDestination(vehicle);/指定消息订阅地址 messageService = (MessageService)getDestination().getService();infoMsg.setBody(info);/填充数据messageService.pushMessageToClients(infoMsg, false);/推至客户端return null;2052102.3.2网络守候程序网络守候程序的作用是监听来自数据库的 Socket 连接建立请求,并接收其传来的车牌 信息,所以程序应

24、无需外部调用,具备自启动功能,在系统启动之初即开始进入工作状态。 由于前述消息适配器类以 servlet 的形式驻留在 Web 容器当中,随服务器的启动实例化,因 此可借助消息适配器类达到自启动要求。具体作法是覆写消息适配器类的构造函数,将守候 程序的启动过程添至其中。另外,为避免网络守候程序阻塞消息适配器主线程,需要启动一 个新的线程专门运行守候程序。程序片段如下:public VehicleService()super();startServer();/启动网络守候程序215220public void startServer()Thread td = new Thread(new Run

25、nable()public void run()server = new ServerSocket(*);socket = server.accept(););td.start();225230235240245250与数据库端成功建立起 Socket 连接之后,上游节点的车牌信息即可源源不断地送往 Web服务器,经中转后再推送至 Flex 客户端。2.4客户端程序客户端程序是全逆向数据推送过程的最后一个环节。如前所述,Flex 客户端使用 Producer 和 Consumer 两个组件来调用 LCDS 消息服务,其中 Producer 是向指定地址发送消 息,而 Consumer 组件用来

26、从指定地址获取消息,两者配合使用,可以完成客户端之间的实 时消息传递。在机动车识别系统中,只需使用 Consumer 组件来完成数据的接收工作。 Consumer 组件调用语句如下:其中的 destination 属性指定了 Consumer 组件的订阅地址。通过在客户端程序初始化过程中调用 Consumer 类的 subscribe()方法,完成客户端对指定地址的订阅。当有数据推送至 客户端时,会触发 Consumer 类的 message 事件,编写相应的事件响应函数对数据进行处理, 比如在客户端页面上弹出警告对话框通知警员有违章车辆通过路口,从而达到实时监控和预 警的目的。3结论车辆监控

27、点发回的车牌信息在经过了数据库服务器和 Web 服务器两次中转之后,最终 推送至 Flex 客户端,数据在整个传递过程中顺畅通过每一个节点,没有额外滞留,节省了 用户查询所带来的往返时间,最大程度保证了数据的实时性。本文按照全逆向数据推送过程 的逻辑步骤,结合各个节点上使用的关键技术包括 Oracle 数据库的 Java 存储过程和触 发器技术、Java 网络守候程序、LCDS 消息服务以及 Flex 富客户端技术,阐述了全逆向数 据推送过程的设计和实现。对于机动车识别系统这样对数据实时性要求较高的应用系统而 言,全逆向数据推送过程可以保证车牌信息及时提供给警员,有效协助警员稽查违章车辆, 提

28、供工作效率。同时,全逆向推送过程也可应用于其它有数据实时性需求的领域,具有广泛 的适用性和较强的实际意义。参考文献 (References)2551 谢希仁. 计算机网络M. 北京:电子工业出版社,2008.2 PETERSON L L, DAVIE B S. Computer networks:a systems approachM. San Francisco: Morgan Kaufmann,2012.3 GASSNER D. Flash Builder 4 and Flex 4 BibleM. Indianapolis: Wiley Publishing, 2010.2604 徐张廷,

29、李善平. 基于 Flex 的数据发布系统的设计与实现J. 计算机应用与软件,2011,28(3):149-152.5 ALLMON B, ANDERSON J. Flex on JavaM. Stamford: Manning Publications Co, 2011. 6 AHMED T, ORLANDO D. Flex 4 in ActionM. Stamford: Manning Publications Co, 2011.7 BAUER C, KING G. Java Persistence with HibernateM. New York: Manning Publications Co, 2007. 8 钱慎一,张素智. Oracle 11g 从入门到精通M. 北京:水利水电出版,2009.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1