一种分布式rfid中间件的通信控制方法

文档序号:7757628阅读:186来源:国知局
专利名称:一种分布式rfid中间件的通信控制方法
技术领域
本发明设计一种RFID中间件在分布式环境下的通信机制,以及对RFID中间件数 据通信进行可靠性的优化。
背景技术
随着社会生产力的飞速发展,RFID (Radio Frequency Identification Technology)技术也在各个领域中得到更多的关注与应用,人们对RFID应用的安全与“自 适应”的要求越来越高,人们对智能化的程度要求也越来越高。目前,RFID在各个领域的应用正越来越广泛的展开,RFID中间件产品虽然初具规 模,但在RFID数据通信时出现的问题也越来越受到人们的关注。如何保证RFID中间件的 通信的可靠性,已经成为RFID产品在实际的应用中亟待解决的问题之一。本发明针对通信 可靠性的研究,使得RFID数据的传输得到保障。而将RFID中间件在分布式环境下得到应用,是RFID技术发展的趋势,也是对RFID 中间件技术应用研究的一次大胆尝试。本发明提出了将RFID中间件技术与JiniCJava Intelligent Network Infrastructure)平台结合的解决方案,利用“即插即用”的运行机 制,结合分布式的编程模式,融合面向服务的思想,使得RFID服务能在网络环境下自动接 入、应用程序或资源能得到共享、数据通信能够更加高效快速的进行。同时,提出的这种解 决方案,对构建强壮的分布式应用系统有非常重要的指导意义和现实应用价值。

发明内容
本发明的一个目的在于解决RFID中间件与Jini的结合,实现RFID中间件在分布 式环境下的通信,完成RFID设备“即插即用”的功能。并且还能够对网络异常情况下的RFID 数据通信进行各种处理,实现对RFID中间件数据通信关于可靠性的优化。为了实现发明目的,采用的技术方案如下(1) RFID设备作为服务接入Jini网络首先,将RFID设备按照Jini的规范封装成服务,然后,通过Jini系统的发现 (Discovery)协议和加入(Join)协议使设备服务成为Jini联盟中的一员。(2) RFID中间件设备代理层(Agent)的配置首先,Agent接入Jini网络,在网络中找到Jini的查找服务(LookupService)的 地址并且注册,让自己作为Jini联盟中的一员;然后,Agent在查找服务中查询配置自己需 要的服务,按照预留的服务接口来找到实现这些接口的服务对象,查找服务匹配到合适的 服务之后会将服务的副本和服务提供者的地址返回给还未配置的Agent,Agent通过地址 找到服务的提供者(通常为已经配置成功的RFID中间件Agent),从而获得服务实例。(3)阅读器管理层(Manager)与设备代理层的通信Manager作为一个客户接入Jini中,在Jini中通过查找服务找到某台设备的地 址(IP地址),就绪的Agent已经在Jini联盟中获得了配置自己的设备管理服务对象,当Manager获得了 Agent的IP地址后,Manager能够与Agent建立实际的通信通道进行通信, 从而获得标签数据等信息。在设备管理层中增加通信通道的维护模块。针对Agent正常关闭并重新启动程 序、Manager正常关闭并重新启动程序、Agent异常终止并重新启动程序、Manager异常终止 并重新启动程序,空闲时网络异常的情况进行关于通信可靠性的优化处理。


图1为基于Jini的RFID中间件平台的结构。图2为RFID中间件通信优化设计框架。
具体实施例方式下面结合附图对本发明做进一步的说明。一、为了解决RFID中间件与Jini的结合,实现RFID中间件在分布式环境下的通 信,本发明提出的基于Jini的RFID中间件平台的结构如图1所示,采取的实施步骤如下1、RFID设备在Jini中的管理(I)RFID设备服务生成首先,定义设备接口 AbstractDeviceModel,使 AbstractDeviceModel 接 口 继承 Java. rmi. Remote,并且使接口中的方法抛出java. rmi. RemoteExc印tion异常。然后,定义 服务代理 VirtualReade 来实现设备接 口,以及 net. jini. lookup. ServiceIDListener 和 java. io. Serializable ^ Π。 AbstractDeviceModel是一个外露RFID设备服务的接口,在Jini联盟中的其它成 员可以引用它,而VirtualReader是RFID设备服务,它实现了 AbstractDeviceModel接口, 并且将VirtualReader服务实例在Jini中注册,从而其他的成员可以通过Jini的查找服 务查询该服务对象。(2)定位Jini查找服务本发明 <吏用 net. jini. discovery. LookupDiscoveryManager 类,在己失口白勺 固定终端上以广播的方式查找出所有的查找服务,并且在此类的构造函数中也加入 DiscoveryListener监听器,方便快速找到查找服务。(3) RFID设备服务对象在Jini中的注册首先定义Serviceltem对象,并将RFID服务实例自身作为参数注入;然后定义 Entry []对象,设置设备信息;调用ServiceRegistrar对象的register ()方法,将RFID设 备服务注册到查找服务,同时返回一个ServiceRegistration对象。2、RFID中间件在Jini中的配置与管理首先定义两种设备代理层=Agentl和AgentO。Agentl包含RFID中间件设备代理 层的“设备管理服务”集合和一个“配置服务端”,Jini联盟中至少有一个Agentl。AgentO 代表某台在Jini中还未被配置的RFID中间件,具有一个“配置客户端”。(1)设备管理服务的生成MfAgentl 中的设备管理模块的相关类(ReaderDevice> DataSelector> Source、 NotificationChannel、ReadPoint、TagSelector> Trigger)封装成月艮务。
这些服务实现java. io. Serializable 接 口 和 net. jini. lookup. ServiceIDListener接口,同时也继承对应的设备配置服务接口,这些管理服务的接口与设 备管理服务——对应,均要继承Java. rmi. Remote类,同时接口中的方法必须抛出java. rmi. RemoteException 异常。(2)设备管理服务的实现Agentl中的配置服务端(ConfigServer)用于生成和管理设备管理服务对象。首 先,使用LookupDiscoveryManager类找到查找服务,返回ServiceRegistrar类对象;第二, 定义设备管理服务中的ReaderDevice服务对象。第三,用net. jini. lookup. JoinManager 类,将ReaderDevice服务对象注册到查找服务中。(3)设备管理服务的获得在AgentO配置客户端中的ConfigClient进行查询与获得服务。首先,定位 Jini的查找服务,同时返回ServiceRegistrar对象。第二,通过ReaderDevice服务暴 露的接口 ReaderDeviceModel建立服务匹配模板类(ServiceTemplate)。第三,调用 ServiceRegistrar对象的lookup ()方法来进行查询,在lookup ()方法中需要注入事先 定义的ServiceTemplate对象。第四,在Jini的查找服务中找到了设备管理服务对象之后, 查找服务会返回ServiceItem类型对象,从ServiceItem对象中,AgentO可以获得服务提 供者(Agentl)的相关信息,例如服务提供者的地址等等;最后,AgentO和Agentl能够直接 建立通信,通过RMI机制,将服务对象传递给AgentO,完成配置。3、阅读器管理层(Manager)与设备代理层(Agent)通信Manager作为Client接入Jini中,从Jini的查找服务中查询到配置完成的 Agent,获得其IP地址。按照EPC规范,Manger和Agent之间建立起两条通道(CommandChannel和 NotificationChanne 1)分别进行命令通信和报文通信。二、为了实现RFID中间件通信的可靠性优化,本发明采取的实施步骤如下UAgent正常或异常关闭并重新启动程序Agent与Manager重新建立网络联接,Manager重新对Agent进行配置。在Manager 进行设备的重新配置时,会检测到已经有Readerdevice对象存在,如果此时通信通道已经 关闭,则 Manager 命令 Agent 删除 Readerdevice 对象,Manager 也删除 Readerdevice 对象 副本,重新建立新的Readerdevice对象。2、Manager正常关闭并重新启动程序Manager端发送goodbye命令,Agent收到命令后,首先判断报文缓冲池中是否有 报文,如果有报文,先将报文发送完毕,发完之后,关闭报文通道,如果缓冲池中已经没有报 文了,就直接关闭报文通道,在进行以上的处理之后,Agent发送“goodbye”命令的回复给 Manager,然后关闭命令通道;Manager端在收到命令的回复后,关闭报文和命令通道。3, Manager异常终止并重新启动程序当Agent检测到通信断开,就停止从阅读器中接收数据的线程,然后查看报文缓 冲区中是否还有数据没有发出,如果有数据,就将数据发送完毕,在停止发送数据的线程, 然后关闭报文和命令通道;如果没有数据,就直接停止数据发送的线程,关闭报文和命令通 道。在TimerNotif ication类中增加一个stop ()方法,用于线程的控制,检测报文缓冲区中是否还有报文,如果有报文将其发完,然后关闭线程和通道;如果没有报文,直接关闭线 程和通道。4、空闲时网络异常情况在Manager与Agent分别启用一个Timer线程,每隔一段时间发送一个小的检测 数据包,从Manager与Agent开始建立连接的时候“心跳包”线程就开始运行,检测数据包通 过命令通道发送,当命令传输完毕后,命令通道处于空闲,此时可以用来发送检测数据包; 然后,在两端另起一个Timer线程,用于计算最后一次检测数据包到达的时间与当前时间 的差值,如果断网,差值时间过长,即可被检测到。
权利要求
一种分布式RFID中间件的通信控制方法,其特征在于包括如下步骤1)将RFID设备作为服务接入Jini网络;2)将RFID中间件设备代理层(Agent)在Jini网络进行配置;3)将阅读器管理层(Manager)接入Jini网络并与设备代理层进行通信。
2.根据权利要求1所述的分布式RFID中间件的通信控制方法,其特征在于所述步骤 1)的具体操作为首先将RFID设备按照Jini的规范封装成服务,然后通过Jini系统的发 现协议和加入协议使设备服务成为Jini联盟中的一员。
3.根据权利要求2所述的分布式RFID中间件的通信控制方法,其特征在于所述步骤1)进一步包括如下步骤IDRFID设备服务生成首先定义设备接 口 AbstractDeviceModel,使 AbstractDeviceModel 接 口 继承 Java, rmi. Remote,并且使接口中的方法抛出java. rmi. RemoteException异常,然后定义服务代 理 VirtualReade 来实现设备接口,以及 net. jini. lookup. ServiceIDListener 和 java. io. Serializable 接口 ;所述AbstractDeviceModel是一个外露RFID设备服务的接口,在Jini联盟中的其它 成员能够引用它,而VirtualReader是RFID设备服务,它实现了 AbstractDeviceModel接 口,并且将VirtualReader服务实例在Jini中注册,从而其他的成员能够通过Jini的查找 服务查询该服务对象;12)定位Jini查找服务,使用net. jini. discovery. LookupDiscoveryManager类在已知的固定终端上以广播 的方式查找出所有的查找服务,并且在此类的构造函数中也加入DiscoveryListener监听 器,方便快速找到查找服务;13)RFID设备服务对象在Jini中的注册首先定义Serviceltem对象,并将RFID服务实例自身作为参数注入,然后定义Entry [] 对象,设置设备信息,调用ServiceRegistrar对象的register ()方法,将RFID设备服务 注册到查找服务,同时返回一个ServiceRegistration对象。
4.根据权利要求1所述的分布式RFID中间件的通信控制方法,其特征在于所述步骤2)的具体操作为首先Agent接入Jini网络,在网络中找到Jini的查找服务的地址并且 注册,以作为Jini联盟中的一员;然后Agent在查找服务中查询配置需要的服务,按照预留 的服务接口找到实现这些接口的服务对象,查找服务匹配到合适的服务之后将服务的副本 和服务提供者的地址返回给还未配置的Agent,Agent通过地址找到服务的提供者,从而获 得服务实例。
5.根据权利要求4所述的分布式RFID中间件的通信控制方法,其特征在于所述步骤 2)首先定义两种设备代理层=Agentl和AgentO,Agentl包含RFID中间件设备代理层的“设 备管理服务”集合和一个“配置服务端”,Jini联盟中至少有一个Agentl,而AgentO代表某 台在Jini中还未被配置的RFID中间件,具有一个“配置客户端”,然后进一步包括如下步 骤21)设备管理服务的生成将Agentl中的设备管理模块的相关类,包括ReaderDevice、DataSelector, Source、NotificationChannel、ReadPoint, TagSelector, Trigger 封装成服务;这些服务实现 java. io. Serializgible _ Π禾口 net. jini. lookup. ServiceIDListener ^ Π , |1] Wiii^H/lcXi 应的设备配置服务接口,这些管理服务的接口与设备管理服务一一对应,均要继承Java, rmi. Remote 类,同时接口 中的方法抛出 java. rmi. RemoteException 异常;22)设备管理服务的实现Agentl中的配置服务端(ConfigServer)用于生成和管理设备管理服务对象,首先使 用LookupDiscoveryManager类找到查找服务,返回ServiceRegistrar类对象,然后定义 设备管理服务中的ReaderDevice服务对象,最后用net. jini. lookup. JoinManager类将 ReaderDevice服务对象注册到查找服务中;23)设备管理服务的获得在AgentO配置客户端中的Conf igClient进行查询与获得服务,第一定位Jini 的查找服务,同时返回ServiceRegistrar对象,第二通过ReaderDevice服务暴露 的接口 ReaderDeviceModel建立服务匹配模板类(ServiceTemplate),第三调用 ServiceRegistrar对象的IookupO方法来进行查询,在IookupO方法中需要注入事先定 义的ServiceTemplate对象,第四在Jini的查找服务中找到了设备管理服务对象之后,查 找服务会返回ServiceItem类型对象,从ServiceItem对象中,AgentO能够获得服务提供 者Agentl的相关信息,最后,AgentO和Agentl能够直接建立通信,通过RMI机制,将服务 对象传递给AgentO,完成配置。
6.根据权利要求1所述的分布式RFID中间件的通信控制方法,其特征在于所述步骤 3)的具体操作为=Manager作为一个客户接入Jini中,在Jini中通过查找服务找到设备的 地址,当Manager获得了设备对应的Agent的IP地址后,Manager能够与Agent建立实际 的通信通道进行通信,从而获得标签数据等信息。
7.根据权利要求6所述的分布式RFID中间件的通信控制方法,其特征在于所 述步骤3) Manager作为Cl ient接入Jini中,从Jini的查找服务中查询到配置完成 的Agent,获得其IP地址,Manger和Agent之间建立起两条通道,CommandChannel和 Notificati onChanne 1分别进行命令通信和报文通信。
8.根据权利要求1所述的分布式RFID中间件的通信控制方法,其特征在于还包括对 网络异常情况下的RFID数据通信进行各种处理,实现对RFID中间件数据通信可靠性的优 化处理步骤,具体通过在设备管理层中增加通信通道的维护模块,包括针对Agent正常关 闭并重新启动程序、Manager正常关闭并重新启动程序、Agent异常终止并重新启动程序、 Manager异常终止并重新启动程序,空闲时网络异常的情况进行关于通信可靠性的优化处 理。
全文摘要
本发明提供了一种分布式RFID中间件的通信控制方法,以及关于RFID中间件数据通信的可靠性优化。所述分布式RFID中间件通信机制包括RFID设备作为服务接入Jini网络,RFID中间件设备代理层(Agent)的配置,以及阅读器管理层(Manager)与设备代理层的通信。所述关于RFID中间件数据通信的可靠性优化通过在设备管理层中增加通信通道的维护模块,针对Agent正常或异常关闭并重新启动程序、Manager正常或异常关闭并重新启动程序、空闲时网络异常情况下的RFID数据通信进行各种处理来实现。
文档编号H04L29/12GK101924768SQ20101026015
公开日2010年12月22日 申请日期2010年8月20日 优先权日2010年8月20日
发明者刘发贵, 刘芳, 徐磊, 林跃东, 申维 申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1