RFID中间件系统关键模块的设计与实现
0 引言
射频识别技术是一种利用射频通信实现的非接触式自动识别技术(以下通称RFID技术)。RFID技术成功的关键除了标签的价格、天线的设计、波段的标准化、设备的认证之外,最重要的是要有关键的应用软件才能迅速推广。而中间件可称为RFID技术运作的中枢,因为它可以促进关键应用的问世。J2EE是一个标准中间件体系结构,旨在简化和规范多层分布式企业应用系统的开发和部署。本文将介绍RFID中间件系统的设计和关键模块的实现方法,根据系统可移植性、可扩展性、可维护性和易集成性的要求,以J2EE技术作为开发平台,基于三层B/S模式,阐述了分布式RFID中间件中关键模块的实现方法,采用面向对象的方法进行设计和开发。
1 RFID中间件系统概述
企业在实施RFID项目改造期间,发现最耗时、耗力、复杂度和难度最高的问题是如何保证RFID数据正确导入企业的管理系统,为此企业做大量的工作以保证RFID数据的正确性的。经企业和研究机构的多方研究、论证、实验,最终找到了一个比较好的解决方法,即RFID中间件。
RFID中间件是实现RFID硬件设备与应用系统之间数据传输、过滤、数据格式转换的一种中间程序,将RFID读写器读取的各种数据信息,经过中间件提取、解密、过滤、格式转换、导入企业的管理信息系统,并通过应用系统反应在程序界面上,供操作者浏览、选择、修改、查询。中间件技术也降低了应用开发的难度,使开发者不需要直接面对底层架构,而通过中间件进行调用。
RFID中间件是一种消息导向的软件中间件,信息是以消息的形式从一个程序模块传递到另一个或多个程序模块。消息可以非同步的方式传送,所以传送者不必等待回应。RFID中间件在原有的企业应用中间件发展的基础之上,结合自身应用特性进一步扩展并深化了企业应用中间件在企业中的应用。其主要特点是:
(1)独立性,RFID中间件独立并介于RFID读写器与后端应用程序之间,不依赖于某个RFID系统和应用系统,并且能够与多个RFID读写器以及多个后端应用程序连接,以减轻架构与维护的复杂性。
(2)数据流,RFID中间件最重要的组成部分,它的主要任务在于将实体对象格式转换为信息环境下的虚拟对象,因此数据处理是RFID最重要的功能。RFID中间件具有数据的采集、过滤、整合与传递等特性,以便将正确的对象信息传到企业后端的应用系统。
(3)处理流,RFID中间件是一个消息中间件,功能是提供顺序的消息流,具有数据流设计与管理的能力。在系统中需要维护数据的传输路径,数据路由和数据分发规则。同时在数据传输中对数据的安全性进行管理,包括数据的一致性,保证接收方收到的数据和发送方一致。同时还要保证数据传输中的安全性。
2 系统总体设计
2.1 系统结构
(1)系统网络结构如图1所示。本文所设计的RFID中间件系统包括两部分,系统管理服务器和数据采集端。数据采集端的计算机连接着读写器,系统管理服务器端对数据采集端的读写器进行控制,读写器采集到的原始RFID数据首先传递到数据采集端,经过初步的处理后,传送到系统管理服务器进行进一步的处理。
(2)系统软件结构。系统管理服务器端、数据采集端的功能模块如图2所示。
2.2 软件基本组成模块
RFID中间件在应用中的作用主要是RFID标签数据处理、数据处理组件管理和RFID读写器的监控管理等功能。通过这几个功能模块完成了对系统所要处理的各种对象的管理,同时,这几个分散的系统本身也需要管理。通过系统管理模块可以将这几个管理模块统一起来,使得整个分布式RFID中间件系统浑然一体。
2.2.1 RFID中间件系统管理模块
系统管理模块采用Browser/Server模式的MvC框架,即表示层、控制层和模型层。表示层是用户与系统的接口,是用户工作的界面。对RFID中间件的管理、读写器的控制和监控、标签数据查询、数据处理模块的管理等都是通过表示层发送请求。控制层主要负责请求的分发,接收用户发送的所有请求,并按照特定的逻辑分发给其他模块作进一步处理。模型层主要负责业务流程、状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
2.2.2 读写器监控和管理模块
读写器监控和管理模块基于JMX管理框架,将读写器开发包用统一接口进行封装,并将接口方法作为RMI远程方法发布。对读写器的控制是在管理服务器中进行的,将对读写器的远程方法调用封装为一个MBean组件,注册到服务器中的JMBeanServer中,这样可以通过JMX管理框架来监控管理读写器。通过封装,以编程的方式弥补了不同厂商读写器开发包不同的差异,将对读写器的控制封装成接口统一的MBean组件。另外,JMX管理框架还提供时间服务、通知服务、监视服务和角色服务等服务。JMX管理框架如图3所示。
2.2.3 数据消息处理模块
数据消息处理模块基于JMS消息服务体系,这种组件体系结构将支持任意数据处理过程。业务分析人员可以对数据处理过程进行建模。一个数据处理过程实际上就是一些步骤的聚集。这些步骤包括数据过滤、格式转换、路由等。每一个类别将被抽象,并且建模成为一个JMX组件,如图4所示的消息处理组件的流程。
3 系统关键模块实现
本系统基于J2EE技术开发,其中组件管理基于JMX管理框架,包括:读写器组件、数据采集端组件、数据处理组件等;RFID数据消息的传递基于JMs消息服务体系。
本文的RIFD中间件系统开发工具采用Eclipse3.2,应用服务器软件采用JBOSS4.0,其中JBOSS4.0自带Web容器为Tomcat5.5。管另服务器端采用了基于Struts的MVC多层次结构框架,数据服务层则采用MySQL5.0数据库。SFID中间件系统中的关键模块是具有典型开发意义的读写器管理组件和数据处理组件,下面对读写器管理组件中时间服务的实现和数据处理组件的实现进行描述。
3.1 读写器模块时间服务
JMx(Java Management Extensions,Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。在JMX规范中,管理组件是一个能代表管理资源的Java对象,遵从一定的设计模式,实现该规范定义的特定的接口。该定义保证了所有的管理组件以一种标准的方式来表示被管理资源。管理接口就是被管理资源暴露出的一些信息,通过对这些信息的修改就能控制被管理资源。管理接口包括:能被接触的属性值;能够执行的操作;能发出的通知事件等。
在本系统中将每个读写器模块的远程方法调用封装为一个管理组件(MBean)作为JMX服务器的实例注册到JMX服务器中。通过JMX框架对读写器进行监控和管理,使RFID中间件系统能提供管理、监控读写器的功能。本部分描述为读写器管理组件添加时间服务,以达到定时控制读写器的目的。JMX时间服务在指定的日期和时间触发消息;也可以在一个固定间隔重复触发消息。时间服务由一个MBean实现并可以管理,能够发送它指定的TimerNotification类的消息实例。javax.management.NotificationListener由想要接收通知的对象来实现,实现方法handleNotification。对于定期通知,则使用固定延迟执行方案,如在Timer中指定的那样。为了使用固定速率执行方案,要使用addNotification方法。图5为读写器时间服务的UML设计图。
3.2 数据消息处理组件
JMS(Java Message Service)是访问企业消息系统的标准API,定义了Java中访问消息中间件的接口,但JMS只是接口,并没有给予实现,实现JMS接口的消息中间件称为JMS提供者(JMS Provider)。JBoss JMS的服务体系结构中,JMS Provider叫做JbossMQ。
在JMS框架中运转的方法如下:
(1)得到一个J-NDI初始化上下文(Context)。
(2)根据上下文来查找一个连接工厂。
(3)从连接工厂得到一个连接(Connect)。
(4)通过连接来建立一个会话(Session)。
(5)查找目的地(Topic/Queue)。
(6)根据会话以及目的地来建立消息制造者(TopicPublisher/QueueSender)和消费者(TopicSubscrib.er/QueueReceiver)。
JBossMQ是通过xml文件 bossmq.destinations.service.xml进行配置的。以下是获得JBOSS JNDI初始化上下文(Context)的代码:
Hashtable props=new Hashtable();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
props.put(Context.PROVIDER —URL,ip+":1099");
props.put("java.naming.rmi.security.manager","yes");
props.put(Context.URL—PKG—PREFIXES,"org.jboss.naming");
Context context=new InitialContext(props)
下面将描述创建一个MBean来实现一个数据处理节点。消息组件可以按照MBean来部署。消息处理组件执行功能:从源队列中获取消息,对消息执行处理,然后将结果消息放置到目标队列。图6显示了这个组件的UML设计。
通过应用JMX体系结构,可以公开类方法,这样他们可以在运行时被发现和部署。通过一个简单的可处理接口,可以在JMS的MessageProcessor消息逻辑和OrderProcessor类的数据处理逻辑之间创建一个关注点分离。这就降低了JMS以及数据处理逻辑类之间的耦合度,并增加了消息代码的可重用性。OrderProcessor类是数据处理逻辑,其中包括过滤、格式转换、加解密、路由等。
4 结束语
RFID中间件是RFID系统中的重要组成。本文针对REID中间件的功能需求,从REID中间件、系统总体结构、软件设计与实现等方面系统地阐述了一种基于J2EE的分布式RFID中间件的构建方法,实现了J2EE技术与RFID技术的结合;综合应用JMX,JMS,Struts技术,设计并实现了RFID中间件系统中的关键模块,具有一定的工程指导和借鉴作用。