■ 刘忠 李洪研
在企业级Java平台第二版(J2EE)应用系统开发中,W eb层框架(Struts)+业务层框架(Spring)+数据持久层框架(Hibe rnate)(SSH)是流行的轻量级整合开源框架,采用模型-视图-控制器(M VC)设计模式将表示层、业务逻辑层分离并与持久层协同工作,可增强应用系统的可维护性和可扩展性,提高代码的可复用性和开发效率。在分析SSH结构和整合原理基础上,设计出跨平台、可伸缩,适用于多种层面、多种对象和多种网络环境的GSM-R数据管理系统,实现GSM-R网络数据管理、终端数据管理、通信地理信息数据管理、报表管理、系统管理等功能。实际应用表明:SSH整合架构为开放的、企业级和可伸缩性的J2EE应用开发提供了有效支持。
J2EE是平台独立的、可移植的、安全的、标准的企业级应用平台。J2EE本身是一类协议标准而不是产品,包括Java企业级Bean(EJB),Java服务器页面(JSP),Java编写的服务器端程序(Se rv le t),Java消息服务(JMS),Java组件结构(JCA),Java事务应用程序接口(JTA)等规范,涵盖企业应用开发中涉及到的各种实现技术,其中EJB是J2EE的核心。
M VC是一种软件体系结构模式,模型包含应用所需的所有行为和数据,试图是模型的可视化表示,控制器处理用户输入并将模型映射到试图中。M VC特别适用于基于J2EE的3层体系结构,视图主要由JSP页面的表示层元素组成,模型主要是EJB构件实现的应用模型,而Servle t则可视为控制器。
SSH是由客户端表示层(CPL)、服务器端表示层(SPL)、业务逻辑层(BLL)、数据持久层(DPL)和域模型层(DM L)构成的4层体系结构,其中SPL用Stru ts框架描述M VC模型;BLL由Sp ring框架的控制反转(IoC)容器协助完成;DPL用Hibe rnate框架的对象和关系映射(ORM)完成与后台数据库的交互。此外,SPL与BLL通过DM L的值对象(VO)进行数据传递;BLL与DPL用DM L的VO-PO(持久化对象)来描述对象之间的关系。
在SSH分布应用架构中,为确保各层间界面清晰且松散耦合,BLL的各种业务逻辑服务都应设计成可重用,且相互间不存在依赖关系;数据访问操作应在DPL中被封装成数据存取目标(DAO)类,而不直接出现在BLL或SPL代码中。
(1)在SPL中不应出现业务逻辑代码。Stru ts框架用Ac tion Fo rm完成请求的参数传递,但它不属于DM L中的VO。因为ActionForm 继承了org.apache.struts.action.Action-M apping,所以ActionForm与Struts有着紧密的耦合,若使用Ac tion Fo rm作为VO,则在移植到其他表示层的MVC 框架时,底层BLL与DPL的工作将无法完成。
(2)在BLL中Sp ring框架应针对接口编程,因为使用IoC/DI(依赖注入)容器的服务可以很容易地帮助程序员迁移其他业务逻辑实现类。
(3)在DPL中Hibe rnate框架应将实现数据库交互的工作封装成DAO模式,同时为每个DAO实现类提供接口,以配合Spring框架在BLL中的工作。
GSM-R数据管理系统主要具有GSM-R数据操作人机界面、业务逻辑实现、后台数据处理、业务流程控制、数据整合报表、业务申请审批等功能。其业务功能模块包括:系统管理、登录管理、网络基础数据管理、终端数据管理、通信地理信息数据管理、基本资料管理等模块。GSM-R的11类数据类型在日常业务申请中,会出现一类或若干类数据同时申报业务的现象,需确保操作的便捷性、安全性和可靠性。GSM-R数据管理系统每项操作必须在2~5 s内完成,最复杂的分类程序也要在5~10 s内完成处理。GSM-R数据管理系统用例图见图1。
GSM-R数据管理系统结构采用基于浏览器/服务器模式(B/S)的3层结构(见图2)。客户端以W EB浏览器实现人机交互界面,应用服务器作为中间层是GSM-R数据管理系统的核心,它运行于J2EE应用服务器上,实现GSM-R数据与数据间及数据自身修改的业务逻辑,后台GSM-R数据存储采用ORACLE数据库系统。
根据当前铁路GSM-R无线网络发展态势所展现的功能需求目标,整个系统分为业务系统、报表管理、系统管理、权限管理、工作流管理和个人信息管理6个功能模块。
图1 GSM-R数据管理系统用例图
图2 GSM-R数据管理系统体系结构
2.3.1 系统主要功能模块分析
(1)业务系统:包括网络基础数据管理、网络终端数据管理、通信地理信息数据管理、SIM卡业务管理,实现对上述4类数据的增删改查等功能。对于工程数据可通过Exce l导入方式将现有数据导入系统中,并可按照所属铁路局、所属线路对数据进行检索。
(2)报表管理:实现对业务系统中采集到的各种数据,按特定要求进行统计汇总。包括网络基础数据报表、网络终端数据报表、SIM卡业务报表和通信地理信息数据报表。
(3)系统管理:对业务系统及系统基本使用信息进行配置,包括数据字典管理、组织机构管理、系统公告管理和日志管理。
(4)权限管理:对使用系统的操作员进行管理、对操作员使用权限进行管理。功能模块包括角色管理、操作员管理、权限分配管理和菜单管理。通过菜单管理,可动态地对所要显示的左侧菜单进行位置及所属父级菜单的调整更新。
(5)工作流管理:在业务管理中对数据进行维护时的流程进行管理。包括流程申请、流程当前状态及申请业务流程列表等。
2.3.2 GSM-R数据管理系统框架设计
GSM-R数据管理系统总体采用M VC模式的分层思想降低应用界面、逻辑和控制的耦合度。分别由Struts+ExtJS框架实现表示层,Sp ring框架实现业务逻辑层,Hibe rnate框架实现持久层,构成富客户端的B/S结构GSM-R数据管理系统。这种多层架构的系统结构有助于降低模块间的耦合度,增加代码的可复用性。
(1)表示层:是一些带有TagLib 标签和 ExtJS脚本的JSP页面,利用JSP编程技术结合Stru ts强大的自定义标签库Tag Lib和Ex tJS富客户端脚本来实现,JSP页面中一般不会嵌入Java代码,可增强代码段的可读性和可维护性。
(2)业务层:是由Struts的控制组件ActionServlet,ActionM apping,Action及业务逻辑类JavaBean来实现,该层借助Sp ring框架的依赖注入、面向接口编程等容器组件处理业务逻辑、业务校验和事务处理等,降低持久层之间的耦合性。在JavaBean里封装了与数据持久层的交互关系,以实现所有的业务逻辑。
(3)持久层:以Sp ring和Hibe rnate相结合的方法实现,设计目标是为整体项目提供高层、统一、完全和并发的数据持久机制。通过运用ORM工具,对Hibernate进行关系数据库与对象的关联,把对数据库表的操作转变为对对象的操作,并考虑与数据库交互操作情况及连接池等数据传输性能。
(4)域对象层:用域对象封装业务对象,利用Hibe rnate将域对象映射到数据库中的数据表,使底层数据库表结构相对面向对象模型而透明。采用面向对象设计方法中继承树对应一个表的策略,使该映射策略极易扩展,能将复杂的数据表转化成若干简单的域对象来表示,提高系统的可维护性和可修改性。
(1)平台选择:系统前端为IE6及以上或FireFox3.0及以上浏览器,并下载安装基于PC/SC规范的Ac tiveX组件进行对SIM卡数据的读写,中间层采用Tom ca t中间件作为应用服务器,后台数据库采用Oracle 10g。
(2)多类数据业务并行处理方式:对于11类数据同时进行申报业务的情况,系统采用ExtJS 作为富客户端的实现。基于ExtJS界面,如C/S架构系统的界面一样,便于用户操作,通过标签(TAB)页面方式,通过在一个界面上显示11种数据,在数据修改编辑完成后,直接可进行批量数据的更新提交。既能保证数据的完整性和一致性,又能减少系统操作及业务流程的繁琐性。
(3)大批数据及历史数据处理:对于大批数据更改,可采用在Exce l本地进行修改的方式,在Exce l中对数据进行处理后,通过上传数据导入方式对数据进行批量更新。数据导入可分为两种方式:新增导入和更新导入。对于历史数据,一般可采用新增导入方式,按照一定格式将数据在Excel表格中编辑处理后,导入系统中。
(4)响应速度:一些模块的数据存取量大,数据实体Bean在多表多数据项存取时,由于有太大量的重复数据库操作,系统响应速度变得缓慢。解决方案主要是提高数据库存取效率,可采用数据库连接标准(JDBC)连接取代实体Bean,同时对JDBC代码进行优化,部分数据处理运算可分配到数据库端采用存储过程来完成,从而提高程序运行效率。
将GSM-R数据管理系统部署到Tom cat W eb应用服务器中并启动Tom cat,在IE地址栏中输入GSM-R 数据管理系统的访问地址,进入GSM-R数据管理系统。实测表明:
(1)GSM-R数据管理系统对GSM-R无线网络中的数据可进行科学管理,并提供有效支持,系统运行良好,稳定可靠。
(2)JSP实现个性化页面,有利于实现操作权限的细化管理。每个操作员只能看到自己的功能界面,从而减少操作人员误操作引起的错误。
(3)Ex tJS实现富客户端,有效提升用户体验,减少页面操作的复杂性。
(4)系统具有良好的扩展性,新功能实现只需增加相应的模块代码,而不必改动系统原结构和代码。对于业务逻辑的扩展可通过ActionBean实现。
(5)系统具有良好的重用性,多个Ac tionBean和EJB可供不同模块共用。
(6)系统结构清晰,有利于软件开发的文档管理,提高了文档编写的质量和效率。
[1] 孙卫琴,精通. Stru ts 基于M VC的JAVA W EB设计与开发[M]. 北京:电子工业出版社,2004
[2] 付京周,精通. H ibe rna te3.0 JAVA数据库持久层开发实践[M]. 北京:人民邮电出版社,2007
[3] 孙长明,余利建. 基于Hibernate+Spring+Struts的WEB应用开发框架铁路计算机应用[J]. 铁路计算机应用2007,16(3)
[4] 刘斌,精通. Java W eb整合开发[JSP+AJAX+Struts+Hi bernate][M]. 北京:电子工业出版社,2007
[5] 李刚. 轻量级Java EE企业应用实战-Stru ts2+Sp ring+H ibe rn a te整合开发[M]. 北京:电子工业出版社,2008