2007年8月第21卷第4期装甲兵工程学院学报Journal of Acade my of A r mored Force Engineering Aug .2007Vol .21No .4 文章编号:167221497(2007)0420062204一种基于Java EE 技术的软件架构设计及实现崔伟宁 余立新(装甲兵工程学院信息工程系,北京100072)摘 要:介绍了基于Java EE 软件架构ESI P 的设计和实现。
ESI P 服务器端采用Java EE 技术,应用中间件提供大量的服务,客户端采用插件机制,方便系统的扩充,形成从服务器端到客户端的完整的解决方案。
分析了ESI P 的安全性。
实际应用验证了ESI P 软件架构是开发大规模复杂软件的一种有效途径。
关键词:软件架构;Java EE;中间件中图分类号:TP31115 文献标志码:AD esi gn and Rea li za ti on of a Software Arch itecture Ba sed on Java EECU IW ei 2ning Y U L i 2xin(Depart m ent of I nf or mati on Engineering,Academy of A r moured Force Engineering,Beijing 100072,China )Abstract:This paper intr oduces the design and realizati on of a s oft w are architecture na med ESI P which is based on Java EE technol ogy .On the server side,ESI P uses Java EE,thr ough m id 2ware p r ovides many services .On the client side,it uses the p lug -in mechanis m ,which can extend easily .A ls o this paper analyses the security of ESI P .By several p r oducts based on ESI P,this paper de monstrates that ESI P is an effective way used t o devel op large scale and comp lex s oft w are p r oducts .Key words:s oft w are architecture;Java EE;m id 2ware收稿日期:2007206210基金项目:军队科研计划项目作者简介:崔伟宁(1977-),男,山东诸城人,讲师,硕士. 传统的C /S 、B /S 软件架构在解决具体问题时分别体现了各自的优越性,得到了广泛的应用[1]。
但随着软件规模越来越大、复杂程度越来越高,逐渐显现出其局限性。
许多学者转向研究其他软件架构,例如面向服务的软件体系架构[2]和软件复用技术[3-4]。
笔者结合成熟的软件技术,研制开发了一套基于Java EE 的软件架构ESI P,提供了从服务器端到客户端的完整解决方案,大大提高了软件生产的效率,提高了软件的可靠性,能够适应不同应用的需要。
基于此架构已成功开发了几套软件产品。
本文主要阐述ESI P 的设计思想和实现过程。
1 ES I P 简介ESI P 全称为Equi pment Support I nfor mati onPlatfor m (装备保障信息平台)。
ESI P 的设计目标是为装备信息化建设建立一个通用的、扩展性好的平台,通过平台基本服务层,利用中间件技术和插件技术,为开发人员提供丰富的二次开发接口,为用户提供优秀的软件产品。
在设计ESI P 软件架构时,考虑了以下因素。
1)可扩充性、可维护性。
可扩充性包括2个方面:一方面指软件模块的可扩充,能够很方便地扩充新的软件功能;另一方面指系统本身的可扩充性,能够支持大规模、高并发的访问,支持集群等。
可维护性则要求能够根据客户需求变化进行快速的升级和改进。
2)组件复用。
包括2个方面:服务器端的组件复用和客户端的组件复用。
服务器端组件能够支持 第4期崔伟宁等:一种基于Java EE 技术的软件架构设计及实现远程客户端访问、服务器端本地W eb 层访问,客户端组件能够相互调用和通信,方便集成。
为此,采用了中间件技术和客户端插件技术来达到组件复用的目标。
3)访问方式。
可以通过网络远程访问,也可以在本地以单机模式访问,满足不同应用环境的需求。
网络访问时能够跨广域网进行访问。
4)安全性。
支持良好的用户、权限管理,以及支持常见认证体系(如PKI )、SS L 加密传输等。
首选采用LDAP 认证技术实现用户和权限管理。
5)用户界面及数据接口。
能够支持不同方式采集的不同格式的数据,支持不同风格的用户界面,例如基于浏览器的瘦客户端和具有丰富用户体验的富客户端。
基于上述考虑,考察了2种流行的技术和框架结构:基于微软.NET 技术的软件体系[5-6]和基于Java EE 技术的软件体系[7-10]。
通过比较,选择了Java EE 技术作为ESI P 的技术基础。
Java EE 是J2EE 的升级和发展,引入了新的技术和规范,简化了开发和部署,符合ESI P 的发展要求。
2 ES I P 体系结构ESI P 总体结构如图1所示。
其中,数据服务层隐藏了对不同数据库的支持,并对平台服务层提供统一的数据访问接口。
平台服务层提供基本的服务,可运行在Java EE 环境或单机环境中,形成应用中间件。
接口层主要对硬件和其他系统提供数据转换服务,界面层为用户提供交互界面。
通过平台服务层和数据服务层,隐藏了对后台数据库的直接访问,并且这2层可以采用集群、负载均衡等技术,实现系统的扩充。
图1 ESI P 总体结构 当ESI P 以网络方式运行时(采用JBoss 作为Java EE 服务器),结构设计如图2所示。
从图2可以看出,此体系架构有如下特点。
1)充分利用了Java EE 体系结构的优点,集成了多项Java EE 服务,从而简化服务器端开发,方便客户端调用。
例如应用中间件的自动发布、数据库连接池支持、事务处理支持等。
2)支持W eb 瘦客户端和富客户端2种访问方式,满足用户在不同环境下的应用需求。
通过应用中间件,为W eb 客户端和富客户端提供一致的访问接口,避免了技术实现上的差异。
3)业务逻辑和界面实现分离。
从图1和图2可以看出,界面层只是用户与系统的一个交互接口,所有业务逻辑都在平台服务层借助数据服务层实现。
在具体实现时,采用了EJB3.0和H ibernate 关系对象映射技术,方便了开发和部署。
4)完善的安全机制。
采用Java EE 安全机制,所有数据访问都处在受控的访问上下文中,数据库可以隔离在内部网络,客户端只能通过平台服务层进行访问,避免了潜在的安全隐患。
从图2可以看出,ESI P 在服务器端全面采用了Java EE,包括应用程序服务器、W eb 服务器等,充分利用了Java EE 技术的优势,大大简化了开发和部署的工作量。
36装甲兵工程学院学报第21卷图2 ESI P 设计架构对富客户端,采用了基于插件的体系结构,如图3所示。
客户端参考了开源开发平台Ecli p se [11],采用OSGi [12]作为插件体系结构实现的基础。
通过一致的接口定义,各业务模块可以相对独立编码、调试,通过接口进行交互,方便开发,提高代码质量,实现各模块间的无缝嵌入、有机结合。
客户端实现了2个核心插件:m tn .esi p.core 和m tn .esi p.ui 。
其中m tn .esi p.core 提供了如下功能。
1)完成LDAP 认证,获取用户角色列表和权限列表,连接应用程序服务器并把认证结果传递给服务器端。
单机版运行则直接采用数据库自身完成认证。
2)定义系统常用的消息,实现客户端消息机制,从而使插件之间能够交互。
3)实现系统配置、日志管理等基本功能。
m tn .esi p.ui 插件提供了系统使用的基本界面,例如各种下拉选择框、组合选择框、对话框等,方便插件开发。
系统还实现了其他常用插件,例如m tn .esi p.office 插件,提供公文基本操作;m tn .esi p.ui .ldap 插件,提供对LDAP 用户的管理;m tn .esi p.gis 插件,提供地理信息系统核心操作等。
通过这些插件,实现了客户端所需的基本功能模块。
图3 ESI P 客户端结构在图3中,业务模块通过Java EE 提供的远程访问方式,利用EJB 服务,完成业务逻辑。
3 ESI P 安全性ESI P 利用Java EE 提供的安全机制和LDAP 实现了安全管理。
结构设计如图4所示。
图4 ESI P 安全认证机制46 第4期崔伟宁等:一种基于Java EE技术的软件架构设计及实现 图4中,客户端通过LDAP服务器认证后,把认证信息传播到服务器,服务器产生认证凭据,在客户端调用业务组件提供的各种服务时进行检查。
业务组件的安全由JBoss容器负责,组件的开发人员几乎可以不用或者很少在组件中加入有关安全的代码。
这种安全逻辑和业务逻辑相对独立的架构,使得ESI P系统有更好的灵活性和扩充性。
系统通过声明式安全性和编程式安全性实现安全控制。
客户端采用数据库管理的配置式安全性和开发人员定义的编程式安全性进行控制。
客户端的每个插件都配置了适当的操作角色。
当客户端认证通过后,便从LDAP服务器获取用户的角色和权限信息,然后从数据库中查找用户可以执行的插件模块,对界面进行权限控制。
同时开发人员可以在界面上进行细粒度的编程式控制,满足不同的权限管理要求。
用户执行的所有业务逻辑操作还受到服务器端的安全性管理,未授权的操作服务器将不予执行,从而进一步增强客户端的安全性,防止绕过客户端安全机制进行的未授权业务操作。
4 应用介绍基于ESI P体系结构,笔者参与开发了某“国防政治动员辅助决策系统”、“科研信息管理系统”等几个业务系统,取得了良好的应用效果。
其中“国防政治动员辅助决策系统”主要划分了6大业务模块,各模块通过ESI P调用远程服务器上的服务,完成业务逻辑。
核心模块在同一界面下集成了公文管理、资源管理、地理信息系统等功能,方便用户快速进行业务处理。
5 结束语从实际应用看,ESI P体系结构显示了其独特的优越性,集中体现在:1)平台提供了大量服务,集成了多个基础公共功能模块,极大地方便了开发;2)分离业务逻辑和界面实现,方便业务逻辑的测试,提高系统的健壮性;3)客户端插件式体系,方便系统的扩充和升级,能够迅速适应多变的需求。