一种基于jms消息总线的服务器实时推送系统及方法

文档序号:7794502阅读:664来源:国知局
一种基于jms消息总线的服务器实时推送系统及方法
【专利摘要】本发明公开了一种基于JMS消息总线的服务器实时推送系统及方法,用于LED隧道照明灯智能控制系统中,包括:串口通信模块、与串口通信模块相连接的JMS消息总线、与JMS消息总线相连接的数据处理模块、信息推送模块和控制转发模块、与数据处理模块相连接的JCS缓存,所述控制转发模块又与所述数据处理模块相连接。通过采用数据处理模块与JCS缓存中的数据进行比对,提高计算和处理速度;通过采用JMS消息总线和串口通信模块实现信息推送及远程控制,提高服务器的利用率和通讯的即时性;采用DIV+CSS布局的JSP界面作为系统界面,提高了服务器的信息解析、显示和传送速度,保证通讯即时性、友好交互性和高兼容性。
【专利说明】一种基于JMS消息总线的服务器实时推送系统及方法
【技术领域】
[0001]本发明涉及信息推送【技术领域】,尤其是涉及一种基于JMS消息总线的服务器实时推送系统及方法。
【背景技术】
[0002]传统的Web应用模型为典型的三层架构模型,即浏览器,服务器和数据库。浏览器的主要工作是发送请求、解析服务器的回复消息并显示。服务器的主要工作是根据接收浏览器发送的各种请求作出响应。传统的Web应用存在一个致命的缺陷,使得Web系统无法满足传统桌面系统的需求,那就是:服务器发起的消息传递。在很多应用中,服务器需要向客户端发送消息或信息。因为服务器掌握着系统的主要资源,能够最先获得系统的状态变化和事件的发生。传统的桌面应用系统实现服务器推送是很容易的,因为客户端和服务器之间通常存在着持久的连接,可以实现双向传递数据。而基于HTTP协议的传统Web应用却不行,因为HTTP协议是采用“请求/响应”工作模式的无状态协议,是一种单向的协议,因此无法使用该协议实现服务器主动向浏览器发送数据。而客户端只能向服务器发送请求获取数据,但是这样又无法保证客户端获取的信息不是过时的。
[0003]为了解决上述问题,产生了服务器推送技术。服务器推送技术的基本思想就是将浏览器主动查询信息变为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接,循环这样的操作,便可实现服务器推送技术。
[0004]目前服务器推送技术可分为两大类:基于浏览器插件的服务器推送技术和无插件的服务器推送技术:基于浏览器插件的服务器推送技术,客户端浏览器需要安装插件,如JavaApplet,通过套接字保持与服务器的连接,实现服务器的数据推送;无插件的服务器推送技术,无需在浏览器端安装插件,目前已经出现一些比较成熟的框架,如Pushlet,DffR
坐寸ο
[0005]服务器推送技术目前的应用空间比较广泛,可以用来开发多种类型的网络应用程序,主要应用领域有:
(I)信息实时发布,可用于面向公众提供信息服务的场所,如航班信息显示等。
[0006](2)实时监测领域,可以应用于需要实时监测数据的领域,比如股票、天气、隧道灯智能监控等。
[0007](3)在线游戏领域,如Web游戏。
[0008](4)在线即时通信,可实现即时通信,简单高效。如gtalk等。
[0009](5)RIA的Web应用程序。随着Ajax技术的兴起,服务器推送技术又一次受到了更多的关注。Ajax技术大幅度的提高了 web应用的交互性和响应度,缩小了和桌面应用的距离。
[0010]Pushlet框架采用JSP技术,在服务器端采用Servlet技术,编写一个数据推送类,通过HTTP流连接,将服务器产生的事件对象“推”到客户端浏览器,然后客户端将事件更新到动态网页上,而不需要重载整个页面。Pushlet技术的不足有一下三点:(I)必须开发跨浏览器的适用于动态网页的JavaScript类库。(2)连接用户的数量受限。(3)Push服务器通常不是为长时间连接而设计的,因此对于规模比较大的应用,服务器性能可能会明显下降。
[0011 ] DffR是一个引擎,可以把服务器端Java对象的方法公开给JavaScript代码调用。DffR也允许服务端Java代码直接操作页面DOM元素,对页面进行局部更新。使用DWR可以有效地从应用程序中把Ajax的全部请求/响应循环消除掉。浏览器端代码不需要直接处理XMLHttpRequest对象或者服务器的响应,不再需要编写对象的序列化代码或者使用第三方工具才能把对象编程XML,设置不需要编写Servlet代码把Ajax请求调整成对Java域对象的调用。DWR的服务器推送技术也称为反响Ajax技术,该技术有三种:轮询、Comet、PiggyBacking0
[0012]Comet是一种基于HTTP长连接的服务器推动方式。客户端向服务器发送求情后,服务器将数据通过response发送给客户端,但并不会将此response关闭,而是一直通过response将最新的数据发送给客户端浏览器,知道客户端浏览器关闭。
[0013]Pushlet和DWR是基于HTTP协议的两种无插件服务器推送框架,实现是基于轮询或HTTP长连接方式。两种框架的共同点是利用JavaScript、Ajax技术封装了客户端浏览器和服务器之间的通信,降低了页面程序开发的难度。但是,也不可避免由于实现方式所带来的服务器负载过重的性能问题。

【发明内容】

[0014]本发明主要解决的技术问题是提供一种基于JMS消息总线的服务器实时推送系统及方法,可以方便地应用于需要实时监控数据的控制系统或管理系统,提高服务器的计算和处理速度,保证通讯即时性、友好交互性和高兼容性。
[0015]为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于JMS消息总线的服务器实时推送系统,用于LED隧道照明灯智能控制系统中,包括:串口通信模块、JMS消息总线、数据处理模块、JCS缓存、信息推送模块和控制转发模块,其中:
所述串口通信模块与所述JMS消息总线相连,用于接收段控制箱通过无线信号传输过来的数据,并经过简单的解析处理后,将内容发送到JMS消息总线;
所述JMS消息总线又与所述数据处理模块、信息推送模块、控制转发模块相连,用于实现系统内部各独立模块间的数据通信;
所述数据处理模块又与所述JCS缓存相连,对从所述JMS消息总线接收到的信息进行解析和处理,并与所述JCS缓存进行交互,构造控制命令,通过JMS消息总线与串口通信模块进行数据交互;
所述JCS缓存用于将与所述JCS缓存交互的信息缓存在当前系统中,以便于进行信息比对;
所述信息推送模块采用DWR服务器推送技术,实现服务器端直接向系统界面推送信
息;
所述控制转发模块与所述数据处理模块相连,用于接收系统界面发送的控制请求,并调用数据处理模块中的方法,产生控制命令,通过JMS消息总线发送至串口通信模块,由所述串口通信模块转发给段控制箱。[0016]在本发明一较佳实施例中,所述JMS消息总线包括两个消息主题,分别为状态消息主题和控制消息主题,所述状态消息主题用于将从所述串口通信模块接收到的状态信息传递给所述信息推送模块,所述控制消息主题用于将从所述控制转发模块接受到的控制命令传递给所述串口通信模块。
[0017]在本发明一较佳实施例中,所述串口通信模块包含一个消息发布模块和至少一个消息订阅模块,其中:
所述消息发布模块用于将接收到的状态数据,通过所述JMS消息总线中的状态消息主题,发布状态数据消息至所述信息推送模块;
所述消息订阅模块用于监听所述JMS消息总线中的控制消息主题,当控制转发模块发来控制指令时,将控制指令传递给段控制箱。
[0018]在本发明一较佳实施例中,所述系统界面为使用DIV+CSS布局的JSP界面。
[0019]本发明还提供一种基于JMS消息总线的服务器实时推送系统的方法,所述方法包括实时推送方法和远程控制方法,其中:
所述实时推送方法包括如下步骤:
1)段控制箱将搜集到的状态信息通过无线信号传输到服务器端的串口通信模块;
2)所述串口通信模块进行状态信息解码,并通过JMS消息总线传送给数据处理模块;
3)所述数据处理模块解析状态信息,产生系统内部所需的数据格式,并将获得的状态数据与JCS缓存中的数据进行比对,找到发生改变的数据,并封装成一定的数据格式通过JMS消息总线将数据发送到信息推送模块;
4)所述信息推送模块直接将数据推送到系统界面,在系统界面通过脚本对数据进行解析并更新界面显示信息;所述数据处理模块还将动态更新系统中的缓存数据,以便与系统界面显示的信息一致;
所述远程控制方法包括如下步骤:
1)系统操作人员点击系统界面的开关按钮,向服务器发送请求;
2)服务器端的控制转发模块接收请求,并调用数据处理模块的控制命令构造方法,返回对应的控制命令;
3)然后,控制转发模块通过JMS消息总线将控制命令发送到串口通信模块;
4)所述串口通信模块将接收到的控制命令通过无线信号传输到段控制箱。
[0020]本发明的有益效果是:通过采用数据处理模块与JCS缓存中的数据进行比对,提高计算和处理速度;通过采用JMS消息总线和串口通信模块实现信息推送及远程控制,提高服务器的利用率和通讯的即时性;采用DIV+CSS布局的JSP界面作为系统界面,提高了服务器的信息解析、显示和传送速度,保证通讯即时性、友好交互性和高兼容性。
【专利附图】

【附图说明】
[0021]图1为本发明一种基于JMS消息总线的服务器实时推送系统的连接关系图;
图2为本发明一种基于JMS消息总线的服务器实时推送系统的信息推送流程图;
图3为本发明一种基于JMS消息总线的服务器实时推送系统的远程控制流程图;
图4为图1所示信息推送模块和数据处理模块的类图;
图5为图1所示串口通信模块的类图; 图6为图1所示控制转发模块的类图;
图7为本发明一种基于JMS消息总线的服务器实时推送系统的运行界面图。
【具体实施方式】
[0022]下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
[0023]请参阅图1-图6,本发明实施例包括:
一种基于JMS消息总线的服务器实时推送系统,用于LED隧道照明灯智能控制系统中,包括:串口通信模块、JMS消息总线、数据处理模块、JCS缓存、信息推送模块和控制转发模块,其中:
1、所述串口通信模块与所述JMS消息总线相连,用于与段控制箱进行交互,可实时接收段控制箱通过无线信号传输过来的数据,并经过简单的解析处理后,将内容发送到JMS消息总线;也可通过无线信号往段控制箱发送控制命令;
所述串口通信模块包含一个消息发布模块和至少一个消息订阅模块,所述消息发布模块用于将接收到的状态数据,通过所述JMS消息总线中的状态消息主题,发布状态数据消息至所述信息推送模块;所述消息订阅模块用于监听所述JMS消息总线中的控制消息主题,当控制转发模块发来控制指令时,将控制指令传递给段控制箱,从而实现系统远程控制LED隧道照明灯。
[0024]2、所述JMS消息总线又与所述数据处理模块、信息推送模块、控制转发模块相连,用于实现系统内部各独立模块间的数据通信;
所述JMS消息总线包括状态消息主题和控制消息主题,所述状态消息主题用于将从所述串口通信模块接收到的状态信息传递给所述信息推送模块,所述控制消息主题用于将从所述控制转发模块接受到的控制命令传递给所述串口通信模块;
所述JMS消息总线采用ActiveMQ开源框架实现;ActiVeMQ可以提供订阅/发布模式的消息总线服务,在这种模式中有三种角色,分别为:消息发布者(MessagePublisher)、消息主题(Topic)、消息订阅者(MessageConsumer ), 一个消息主题可以有多个订阅者,消息订阅者会监听该消息主题,当消息发布者向该消息主题发送信息时,所有的消息订阅者均会收到该信息;
系统中有一个JMSFactory类,可以为其他模块提供创建消息发布模块和消息订阅模块的服务,ActiveMQ启动后,会开启一个端口号为61616的tcp连接:tcp://1calhost: 61616, JMSFactory 通过该地址创建一个 ActiveMQConnectionFactory,用来创建连接实例;
在 JMSFactory 类中封装了 两个方法,getMessageConsumer ()和getMessageProducer O ,分别可以获得一个消息订阅模块实例和消息发布模块实例,这两个方法可以接收一个字符串参数,该参数指定了消息发布模块要向哪个主题发布信息,消息订阅模块要监听哪个主题;
MessageProducer类主要负责向消息主题发送消息,该类的实例有一个send方法,可以发送包含实际消息内容的Message实例;
MessageConsumer类主要负责监听消息主题,为该类的实例设置一个MessageListener,可以实现监听器模式,一旦消息发布者发布了消息,消息订阅者可以通过MessageListener监听到消息,并及时做出反映;
其他模块只需要包含一个设置了 MessageListener的MessageConsumer或者包含一个MessageProducer,就可以实现与JMS消息总线的交互。
[0025]3、所述数据处理模块又与所述JCS缓存相连,对从所述JMS消息总线接收到的信息进行解析和处理,并与所述JCS缓存进行交互,构造控制命令,通过JMS消息总线与串口通信模块进行数据交互;该模块中负责数据处理的核心类为DataCenter,主要负责解析LED隧道照明灯的状态信息、构造控制指令字符串、与缓存数据比对、更新缓存数据、格式化缓存数据等;
所述串口通讯模块接收的状态信息是经过压缩的,因此数据处理模块接收到的状态信息需要经过一定的格式化才能进行比对处理;decodeStatusInfo方法可以解析状态信息,并将状态信息封装成系统需要的数据格式,从而可以跟JCS缓存中的现有数据进行比对;在数据比对过程中,会将发生改变的数据提取出来,并进一步封装成适合前台处理的json数据格式,同时更新缓存数据。如果在比对过程中发现有JCS缓存中不存在的数据,则需要将数据添加到JCS缓存中;从而不需要使用数据库来存储LED隧道照明灯的状态信息,提高了计算和处理速度。
[0026]4、所述JCS缓存用于将与所述JCS缓存交互的信息缓存在当前系统中,以便于进行信息比对。
[0027]5、所述信息推送模块采用DWR服务器推送技术,在Java代码中可以直接向系统界面发送数据信息,实现服务器端直接向系统界面推送信息的功能,所述系统界面为使用DIV+CSS布局的JSP界面,并使用Ajax技术与控制转发模块进行交互,在与信息推送模块进行交互时,直接调用LCS中的初始化页面的方法,从数据处理模块获取缓存数据,解析并构造页面内LED隧道照明灯信息的显示;
本系统中设计了一个LCS类,该类负责向系统界面实时推送LED隧道照明灯的状态数据。DWR可以跟Spring结合使用,只需要在Spring配置文件中进行简单的配置,即可实现注解地方式声明一个DWR服务类。这样,在LCS类声明时,添加一个RemoteProxy (name=〃LCS〃)即可;
所述信息推送模块需要监听状态消息主题,接收由串口通信模块发送过来的状态信息。让LCS类实现MessageListener接口,并在该类中定义一个MessageConsumer实例,设置该实例的messageListener为LCS的当前实例,即可实现状态信息的监听;
LCS类还实现了 Observer接口。所述信息推送模块采用观察者模式,在onMessage方法中,每接收到一次状态信息,都会创建一个DataPiOcessor线程,该线程的实例还继承了Observable类,设置其观察者为LCS类的实例。DataProcessor用来解析和处理状态信息,DataProcessor处理完成后通知LCS类的实例,LCS将返回的结果通过pushData直接推送到系统界面进行处理并显示。
[0028]6、所述控制转发模块与所述数据处理模块相连,用于接收系统界面发送的控制请求,并调用数据处理模块中的方法,产生控制命令,通过JMS消息总线发送至串口通信模块,由所述串口通信模块转发给段控制箱;
所述控制转发模块的功能由SpringMVC中的Controller来负责实现,主要负责接收系统界面发送的控制请求,并转发给段控制箱。
[0029]本系统的运行环境:使用Windows 7操作系统,Tomcat服务器;
主要为:在操作系统中安装ActiveMQ软件;将串口通信模块打包成可运行的jar文件;将串口通信模块所对应的硬件部分与段控制箱调试连通;将系统部署到Tomcat服务器中,启动Tomcat服务器;服务器启动成功后,以命令行的方式启动串口通信模块;登录系统主页,即可看到实时的LED隧道照明灯的状态信息。系统运行界面如图7所示。
[0030]一种基于JMS消息总线的服务器实时推送系统的推送方法,如图2所示,包括如下步骤:
1)段控制箱将搜集到的状态信息通过无线信号传输到服务器端的串口通信模块;
2)所述串口通信模块进行状态信息解码,并通过JMS消息总线传送给数据处理模块;
3)所述数据处理模块解析状态信息,产生系统内部所需的数据格式,并将获得的状态数据与JCS缓存中的数据进行比对,找到发生改变的数据,并封装成一定的数据格式通过JMS消息总线将数据发送到信息推送模块;
4)所述信息推送模块直接将数据推送到系统界面,在系统界面通过脚本对数据进行解析并更新界面显示信息;所述数据处理模块还将动态更新系统中的缓存数据,以便与系统界面显示的信息一致。
[0031]一种基于JMS消息总线的服务器实时推送系统的远程控制方法,如图3所示,包括如下步骤:
O系统操作人员点击系统界面的开关按钮,向服务器发送请求;
2)服务器端的控制转发模块接收请求,并调用数据处理模块的控制命令构造方法,返回对应的控制命令;
3)然后,控制转发模块通过JMS消息总线将控制命令发送到串口通信模块;
4)所述串口通信模块将接收到的控制命令通过无线信号传输到段控制箱。
[0032]本发明揭示了一种基于JMS消息总线的服务器实时推送系统及方法,通过采用数据处理模块与JCS缓存中的数据进行比对,提高计算和处理速度;通过采用JMS消息总线和串口通信模块实现信息推送及远程控制,提高服务器的利用率和通讯的即时性;采用DIV+CSS布局的JSP界面作为系统界面,提高了服务器的信息解析、显示和传送速度,保证通讯即时性、友好交互性和高兼容性。
[0033]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种基于JMS消息总线的服务器实时推送系统,用于LED隧道照明灯智能控制系统中,其特征在于,包括:串口通信模块、JMS消息总线、数据处理模块、JCS缓存、信息推送模块和控制转发模块,其中: 所述串口通信模块与所述JMS消息总线相连,用于接收段控制箱通过无线信号传输过来的数据,并经过简单的解析处理后,将内容发送到JMS消息总线; 所述JMS消息总线又与所述数据处理模块、信息推送模块、控制转发模块相连,用于实现系统内部各独立模块间的数据通信; 所述数据处理模块又与所述JCS缓存相连,对从所述JMS消息总线接收到的信息进行解析和处理,并与所述JCS缓存进行交互,构造控制命令,通过JMS消息总线与串口通信模块进行数据交互; 所述JCS缓存用于将与所述JCS缓存交互的信息缓存在当前系统中,以便于进行信息比对; 所述信息推送模块采用DWR服务器推送技术,实现服务器端直接向系统界面推送信息; 所述控制转发模块与所述数据处理模块相连,用于接收系统界面发送的控制请求,并调用数据处理模块中的方法,产生控制命令,通过JMS消息总线发送至串口通信模块,由所述串口通信模块转发给段控制箱。
2.根据权利要求1所`述的基于JMS消息总线的服务器实时推送系统,其特征在于,所述JMS消息总线包括两个消息主题,分别为状态消息主题和控制消息主题,所述状态消息主题用于将从所述串口通信模块接收到的状态信息传递给所述信息推送模块,所述控制消息主题用于将从所述控制转发模块接受到的控制命令传递给所述串口通信模块。
3.根据权利要求2所述的基于JMS消息总线的服务器实时推送系统,其特征在于,所述串口通信模块包含一个消息发布模块和至少一个消息订阅模块,其中: 所述消息发布模块用于将接收到的状态数据,通过所述JMS消息总线中的状态消息主题,发布状态数据消息至所述信息推送模块; 所述消息订阅模块用于监听所述JMS消息总线中的控制消息主题,当控制转发模块发来控制指令时,将控制指令传递给段控制箱。
4.根据权利要求1所述的基于JMS消息总线的服务器实时推送系统,其特征在于,所述系统界面为使用DIV+CSS布局的JSP界面。
5.—种如权1-3所述的基于JMS消息总线的服务器实时推送系统的方法,其特征在于,所述方法包括实时推送方法和远程控制方法,其中: 所述实时推送方法包括如下步骤: 1)段控制箱将搜集到的状态信息通过无线信号传输到服务器端的串口通信模块; 2)所述串口通信模块进行状态信息解码,并通过JMS消息总线传送给数据处理模块; 3)所述数据处理模块解析状态信息,产生系统内部所需的数据格式,并将获得的状态数据与JCS缓存中的数据进行比对,找到发生改变的数据,并封装成一定的数据格式通过JMS消息总线将数据发送到信息推送模块; 4)所述信息推送模块直接将数据推送到系统界面,在系统界面通过脚本对数据进行解析并更新界面显示信息;所述数据处理模块还将动态更新系统中的缓存数据,以便与系统界面显示的信息一致; 所述远程控制方法包括如下步骤: 1)系统操作人员点击系统界面的开关按钮,向服务器发送请求; 2)服务器端的控制转发模块接收请求,并调用数据处理模块的控制命令构造方法,返回对应的控制命令; 3)然后, 控制转发模块通过JMS消息总线将控制命令发送到串口通信模块; 4)所述串口通信模块将接收到的控制命令通过无线信号传输到段控制箱。
【文档编号】H04L29/08GK103780680SQ201410004255
【公开日】2014年5月7日 申请日期:2014年1月6日 优先权日:2014年1月6日
【发明者】吴含前, 袁瑞峰, 姚莉, 李露 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1