摘 要:由于现代企业业务逐日增多,企业中需要处理的数据量急剧增加,需要更多有序的、经过整合处理的信息以供决策;传统的企业Web站点页面的急剧上升使得网站负荷过重,想要进行二次开发就面临极大的困难。要解决这些困难,就需要重建一个可重用,易维护的Web应用程序架构。目前J2EE技术日益成熟,新的架构技术不断出现,这些条件使搭建一个全新的企业Web应用架构成为现实。
关键词:J2EE;Struts;MVC;Liferay;企业架构
A Resolution of Enterprise Framework Based on J2EE
YAN Ming, MA Yuxiang
(Xidian University,Xi′an,710071, China)
Abstract:Because of the increased business modern enterpris es′ affairs and datas that need processing increase rapidly, more ordered and integrated information is requi red to supply decision making. Web pages of traditional web site increas sharpl y, which overloads web sites and makes it difficult to develop further So a re usable and easymaintainable web application framework is needed to resol ve the trouble More well tec hnologies based on J2EE and framework make building a new enterprise web applica tion framework become a reality
Keywords:J2EE;Struts;MVC;Liferay;enterprise framework
1引言
企业尤其是业务繁杂、信息流量大的大规模企业,如何有效地利用信息技术,建立一个快捷、有效、可伸缩的实时业务系统,从而能够高效管理企业业务,实现管理的适当透明性并且能与外界有相当的联系,是现代企业需要面对的问题。基于当前J2EE体系建立一个易于动态扩展、易于维护、易于控制、具有伸缩性的良性企业业务系统,已经成为趋势。
整个系统在需求上可以分为2大部分:企业的门户系统和业务系统。二者密切联系,互相关联。
门户系统是Web应用程序简单统一的访问点,此外他还提供了许多有价值的附加功能,例如安全性、搜索、协作和工作流。门户提供了集成的内容和应用,以及统一的协作工作环境。完整的门户解决方案应该让用户随时随地、安全、方便地访问完成他们任务所需的所有东西。可以设想门户是延伸与用户体验(reach and user experience)的关键。也就是说,门户提供工具和用户界面,用于访问信息和应用程序,进行个性化管理和选择内容。
业务系统是企业内部事务。他主要提供信息共享,公司内部事务处理,监控审批,管理信息以及决策支持功能。他可以提高公司的管理效率,使管理者从事务性工作中解脱出来,用更多的时间和精力来思考和设计更好的决策,及时发现管理中发生的应该纠正的方针和决策。
2企业系统的层次结构
对于J2EE核心技术的简单重组,并不能满足企业级业务系统的需求。针对基于J2EE企业级Web应用系统的设计、开发、部署,要按照功能进行分层实现。这些层是Web层、服务层、数据层。如图1所示。 (图片) 2.1Web层
Web 系统本身的复杂性与业务流程的不确定性,是相当棘手的。进行Web设计,较好的一种技术是基于MVC模式的开发方法。
MVC(Model View Controller)是Application开发的设计模式,也就是大家所知道的Model 2。在MVC的设计模式中,要求在Application开发中把商业逻辑、界面显示和数据进行分离。也就是分别在Model,View,Controller中实现数据、显示(页面显示)和控制(商业逻辑)。在MVC模式中这个问题的解决办法是:View负责显示,他一般从Contr oller得到已经处理过的数据,然后显示在页面当中,使维护变得相对简单。
目前基于MVC设计模式的有JATO,Struts,Web Work,Maverick,Java Server Faces,Tapes try,Turbine等。这里决定采用StrutsStruts是Apache 组织在Web应用中开发的一种基于MVC的设计模式。Struts使用标准的或框架特定的JSP标签库来分离表现逻辑和程序逻辑提供数据绑定功能,将HTTP请求参数透明地更新到Java Bean(通常是命令对象)的属性中去。在W eb层提供对表单数据的语法验证功能,并通过XML配置文件实现验证的参数化。
使用一个通用的控制器Servlet处理客户请求,作为整个应用的入口点,利用配置Action Mapping对象把请求映射到Action处理器对象进行处理。Action处理对象访问Action Form中的数据,处理和响应客户请求。在标准的Web部署描述符文件“webxml”中将请求URL全都映射到该控制器上。其结构如图2所示。
Struts是最具代表性的采用“拉动”(pull)方式的开源MVC应用框架,被广泛使用。(图片) 2.2服务层
对于服务层来说,最值得关注的问题是如何正确地选择和使用分布式架构以及会话Bean。
(1)分布式架构及其实现策略
分布式架构的好处是有助于构建有伸缩性的应用,也存在性能、复杂性、面向对象设计的 制约等问题。在是否选用分布式架构的问题上,应当慎重考虑。可以利用开放API通过SOAP、RMI/IIOP或者Liferay提供的隧道类来访问入口(portal)。
SOAP是比RMI/IIOP更开放的协议标准,暴露Web服务接口要比暴露RMI/IIOP接口给业务带 来更多好处。Web服务传输协议运行在HTTP协议之上,要比RMI更容易通过防火墙,可读性也更强。Liferay(http://www.liferay.com)代表了完整的J2EE应用,提供了隧道类实现与SOAP、RMI/IIOP相似的访问能力。
(2)会话Bean的选择和使用
对于会话Bean,选择无状态会话Bean。因为无状态会话Bean具有以下优势:不需要长期保存自身的状态值,也不专属于特定的客户,占用的服务器资源非常少,可以在客户间共享,通过维护无状态会话Bean的缓冲池,EJB容器就能以少量的实例来支持大量客户的访问。无状态会话Bean的缓冲池确保了每个Bean业务的线程安全性,使我们可以用单线程方式编码无状态会话Bean,特别适合于集群服务器中。与此同时,对于Web应用,由于Web容器可以提供更强健的会话管理(Web容器中的Http Session对象可以拥有许多细粒度的会话属性,有利于在集群服务器之间进行有产复制),所以就没有必要使用有状态会话Bean而导致同一客户状态在两处维护。
2.3数据层
(1) 数据访问策略DAO模式
DAO是理想策略,优势在于:面向接口的轻量级解决方案,能为业务组件提供数据库平台的独立调用,可以支持任一类数据访问技术(JDBC,JDO,实体Bean及O/R框架等)。数据访问的接口由业务逻辑决定,持久层的变化不影响业务逻辑层的工作。
(2)数据访问技术的选择
①基于O/R映射的对象驱动建模解决方案
实体Bean:在概念模型上存在缺陷,细粒度的建模和容器管理的持久性是使用实体Bean的惟一有效途径。Liferay以前采用CMP技术来获得坚持性,现在使用Hibernate,这种技术具有更快的速度和更大的灵活性。
② 基于JDBC的数据库驱动建模解决方案
优点是有助于建立灵活的、可控制的数据模型,并能提供很大余地解决任何性能方面的问题。缺点是必须依赖于完善的高层抽象设计来提供持久层框架的支持,以减少人工的编码量,并保证应用的可移植性。对于J2EE应用而言,JDBC是使用最广的数据库驱动建模技术。
3安全性
首先,Java本身是一种跨平台的安全型语言,因此J2EE在安全上可以得到满足,这是J 2E E先天的优势,其次由于前台门户系统采用Liferay技术,这种技术不但能在不同的数据库上运行,而且Liferay满足JAAS(Java Authentication Authorization Service:得到Java验证和授权的API),当用户登录时,相关API的参数被传至Servlet和EJB层。远程Session EJBs在EJB层检查安全性和许可证,使Session EJBs不能在别处复制。本地Session EJBs将商业逻辑展示给其他的Session EJBs而不必检查安全性,因为他们不能被远程调用。也就是说在Web层和EJB层都有相应的标准可实现基于角色的对资源的访问权限控制,通过相应的容 器配置,可以方便的进行权限分配和控制,将安全配置工作和安全执行工作分开,防止不安 全的操作。根据以上分析,Liferay具有充分的安全性。
4结语
本文基于J2EE技术,给出了一个建立企业的Web架构。对于前台门户系统的实现,采 用了Liferay构架。Liferay使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Str uts框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支 持一些远程信息的获取,并使用Apahce Lucene实现全文检索功能。由于无状态Bean的优 点, 对于用户的访问以无状态会话Bean处理,对于部分处理,可以限制的使用有状态会话Bean以 增强系统处理能力。对于数据访问技术,采用技术已经非常成熟的JDBC,这种技术提供了一 些相当底层的方法来存取数据库,多数厂商采用了JDBC,并为其数据库提供了JDBC驱动程序 。
随着J2EE技术的日臻成熟与新技术、架构的出现和日益完善,基于Java的技术手 段也越来越丰富,Web应用程序的开发获得了越来越优秀的途径。相信日后会出现更加灵活 强大的企业Web架构。
参考文献
[1][美]Jim.Keogh.J2EE参考大全[M].北京:电子工业出版社 ,2003
[2][美]Rick Catell,Jim Inscore,Enterprise Parners.J2EE技 术实践[M].北京:机械工业出版社,2002
[3]Liferay 技术文档 www.liferay.com
[4]Rod Johnson.J2EE设计开发编程指南[M].北京:电子工业出版社,2003
8/5/2005
|