APP下载

基于开源框架的终端运维管理系统的设计

2010-06-07方钟亮

电视技术 2010年7期
关键词:开源页面运维

方钟亮

(昆山市广播电视台 网络中心,江苏 昆山 215300)

1 引言

随着信息技术的发展,有线电视网络运营商大都建立起了如BOSS,OA等运维管理系统[1],但是对于某些设备资源,包括收费计算机终端、光纤管道、节点机房的运维管理缺乏一个有效的信息化管理平台,这使得运营商在设备资源管理中经常重复作业,无法进行精确统计和合理部署。笔者介绍了基于Struts2,Spring和Hibernate开源框的终端运维管理系统设计,实现了面向终端运维的信息化统一管理平台。

2 系统设计

2.1 系统功能设计

根据在终端运维工作中涉及的内容,系统在功能上的总体设计如图1所示。系统包括运维记录管理、终端设备管理、IP地址管理、文件下载管理和机构设置管理。系统的访问分为普通用户和管理员,普通用户只能对上述功能的记录信息进行查看和搜索,管理员则可以进行记录的增加、删除和编辑功能,普通用户和管理员之间可以通过登录、注销进行切换。

2.2 系统结构设计

系统的结构如图2所示,由表示层、服务层和持久层组成,表示层用于处理系统数据和用户之间的交互和数据图表的显示。服务层完成系统具体事务的托管处理。持久层可以实现系统和数据库之间的访问管理。

表示层基于Struts2框架。Struts2是Apache Software Foundation下设的一个开源项目,是基于MVC模式的一个Java轻量级Web应用程序框架,支持通过拦截器来处理用户请求[2]。表示层通过JSP和Struts2标签等技术直接将数据展示于用户IE界面。用户的HTTP请求会通过核心控制器FilterDispatcher根据struts.xml配置文件的定义分发到对应的Action类,Action类则通过调用服务层接口来完成相应业务处理。Action类的函数执行后返回字符串值,并在配置文件的属性中找到对应值来确定下一步的相应动作,如跳转至指定页面或继续执行另一个Action动作。

服务层基于Spring框架。Spring是一个轻量级的控制反转(Inversion of Control,IoC)技术的容器框架,Spring实现了J2EE框架中所倡导的由容器实现对象生命周期管理的功能[3]。通过Web.xml文件的配置,IoC容器在应用服务器启动时得以初始化。配置文件applicationContext.xml中注册定义了数据源、会话工厂、服务层接口和数据接口对象(Data Access Object,DAO),各管理类都以Bean的形式进行注册,并同容器一起初始化。系统中各接口类在被调用现场无需进行对象初始化,而是通过依赖注入的方式由IoC容器提供,这样就能实现软件设计中各组件之间的“松散耦合”[4]。

持久层基于Hibernate框架,Hibernate是一种开源持久层框架,能够通过在数据库表和简单旧式Java对象类(Plain Ordinary Java Objects,POJO)之间建立对象和关系数据库之间映射(Object Relational Mapping,ORM)来实现对数据库的面向对象操作。Hibernate的查询语句HQL是对SQL的面向对象扩展。Hibernate将数据库中的每张表通过定义classname.hbm.xml配置文件映射到相应的POJO对象类,配置文件的类名称需和POJO类名称相同,Hibernate通过在DAO接口中使用HQL语句来实现POJO对象和数据库之间的访问。Hibernate的应用极大简化了J2EE持久层的开发工作[5]。

3 关键技术说明

3.1 分页处理

Struts2标签库中的iterator标签用于页面迭代的输出集合元素,但目前iterator标签还无法处理大批量数据的分页显示。笔者在业务逻辑控制模块中实现分页控制,处理流程如图3所示。首先,通过DAO接口查询符合条件的所有记录,并以集合的形式存储在缓存中;其次,通过计算获取单个页面需要显示的记录在查询集合中的起始位置和终止位置,并由此在内存中截取生成一个新子集;最后,将新生成的集合一并提交给iterator标签予以显示。图中 pageIndex为页面指针(初始值为1),pageSize为页面显示记录数量,listSize为查询集合中所有记录数量,p为每次显示记录在查询集合中的起始指针,e为结尾指针。

上下翻页控制中上、下页指针值prePage和nextPage的计算公式为

式中:pageNum代表总页数,可根据记录数和页面大小来计算,在此不作介绍。翻页过程中,上、下页指针的值被赋给pageIndex,然后执行图3所示的流程来实现数据分页显示。

在业务逻辑控制模块中进行分页处理,相对于其他模块更增加了系统的解耦合度,对表示层的页面控制也更加灵活。

3.2 批量数据处理

大批量数据的处理涉及到系统的效率和稳定性,在持久层处理批量数据的方法通常有:

1)通过JDBC来执行原始SQL语句,此种方法最直接高效,但缺少面向对象的数据库管理,在修改数据时无法保证缓存中Java对象与数据库中数据的一致性,不利于代码的移植和系统的扩展。

2)通过循环语句调用ibernateTemplate对象的Save,SaveorUpdate和Delete方法来实现批量处理数据。Hibernate对象的一级缓存只是构建在内存中,在数据量过大时多次调用Save接口可能会导致内存溢出,需要及时刷新一级缓存或是建立二级缓存。同时在更新或删除数据时每次还要执行查询语句,这种方法效率低下,且容易导致系统出错。

3)利用Hibernate3中提供的用于批量数据处理的HQL语句接口。其处理方式代码如下:

以上的处理方式无须对每个记录进行查询取出再修改保存,避免了内存溢出,并保持对象数据的一致性,在性能上和直接用JDBC进行操作相差无几。文中的系统设计采用第3种批量处理方式。

3.3 统计数据图形化

系统采用JFreeChart技术进行统计数据的图形化显示。JFreeChart是基于Java的开源图表软件开发包,可融入所有Java程序中。JFreeChart可以生成如饼图、柱状图和折线图等多种统计图表,并以JPEG或PNG文件格式保存。用JFreeChart生成统计图表的流程为:1)数据查询。服务器接受用户客户端的查询请求,调用接口查询数据库原始数据,并将数据返回至业务逻辑控制模块,再通过分析计算得到用户需要的统计数据。2)创建数据集。通过DefaultCategoryDataset类创建图像数据集DataSet对象,将统计数据赋予数据集。此时数据集成为图表的数据源。3)创建JFreeChart对象。通过ChartFactory工厂类来创建JFreeChart对象,其数据源指向DataSet,并设置图表对象的颜色、标题和字体等。4)图像生成显示。通过ServletUtilites类在服务端将图表保存为PNG格式的临时文件,并传送至客户端浏览器显示[6]。

图4是2009年昆山广电全年运维记录的查询统计结果。系统通过Web的方式将动态数据以图表形式显示,使用户一目了然,可以直接观察数据变化趋势。

4 系统应用

终端运维管理系统在企业管理中的部署应用如图5所示,系统通过对运维施工的详细记录并进行类别统计分析,向企业管理者提供各种明确的运维信息指标,管理层可及时有针对性地调整管理策略、排除隐患,实现更为有效的运营管理。

从图4来看,票据打印和业务软件的维修施工在所有运维种类中比例较高,具有代表性,涉及打印机硬件设备的维修和职员对业务软件误操作的更正指导。针对这些问题,可逐步进行打印设备的更新和员工的业务操作培训。其效果可以从昆山广电2009年各季度运维统计(表1)中体现,自一季度至四季度两种类型运维比例分别从53.1%和28.1%逐季度降至13.0%和21.7%。这说明针对性的措施使得两种故障发生比例明显减小。

表1 季度运维统计

5 小结

介绍了终端运维管理系统基于Struts2,Spring和Hibernate框架的开发设计。3种开源框架的整合符合J2EE分层设计的理念。同时系统利用开源JFreeChart实现了统计数据的图形化展示。系统具有较高的可扩展性和良好的可维护性。终端运维管理系统实现了对运营终端的有效信息化管理,提供了一个面向设备运维的基础管理平台。在后续的开发中将逐步把广电网络运营所涉及的光纤管道和节点机房的管理融入到平台中。

[1]方钟亮.昆山广电BOSS系统的策略管理建设[J].电视技术,2009,33(3):52-53.

[2]Apache Software Foundations.About apache struts2[EB/OL].[2009-10-01].http://struts.apache.org/2.0.11/.2009-10-1.

[3]Spring Source.Spring documentation[EB/OL].[2009-10-01].http://www.springsource.org/documentation.

[4]杨少波.J2EE项目实训Spring框架技术[M].北京:清华大学出版社,2008.

[5]王军豪,彭岩.Hibernate+Struts+Spring整合技术在电子政务中的应用[J].计算机工程与设计,2008,29(6):1409-1412.

[6]朱贺新,穆荣,卢建军.JFreeChart的应用开发与改进[J].西安科技大学学报,2008,28(4):789-792.

猜你喜欢

开源页面运维
刷新生活的页面
五毛钱能买多少头牛
运维技术研发决策中ITSS运维成熟度模型应用初探
风电运维困局
杂乱无章的光伏运维 百亿市场如何成长
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
基于ITIL的运维管理创新实践浅析
开源计算机辅助翻译工具研究
网站结构在SEO中的研究与应用