搜索详情-外文翻译网

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回

快速开放源代码J2EE的Spring框架Web应用程序开发:一个案例研究外文翻译资料

 2022-07-18 08:07  

英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料


快速开放源代码J2EE的Spring框架Web应用程序开发:一个案例研究

John Arthur

Science Applications International Corporation

JOHN.A.ARTHUR@saic.com

Shiva Azadegan

Towson University

azadegan@towson.edu

摘要:在Web应用程序开发的竞争激烈的领域中,尽可能准确、经济和高效地开发应用程序是很重要的。提高生产率的一个方法是降低复杂性。这已经在最近的运动方式的转变途径2平台开发的java程序员的一个基本主题,企业版(J2EE)的Web应用程序。变化的重点是如何创建J2EE兼容的软件企业没有使用java beanEJB)。最重要的替代方案是Spring框架,它提供了较少的服务,但它比EJB少得多侵入性。这种转变背后的驱动力是需要提高Web应用软件开发和实现领域的生产率和降低复杂性。在本文中,我们简要地描述了Spring底层体系结构,并给出了一个使用Spring的案例研究。

介绍

由于软件体系结构的基本性质,与软件开发的任何其他方面相比,体系结构的选择通常对生产力的影响最大(1)。提高生产力的最好方法之一是找到满足客户需求的最简单的架构,同时仍然提供J2EE体系结构所需的需求。任何J2EE应用程序的核心构建块是表示层(用户界面、UI、层)、业务服务层(中间层)和数据访问层(企业信息系统、EIS、层)。这三层需要在最低程度上实现,这被认为是J2EE兼容的。许多系统还包括持久层作为业务服务层的一部分。

EJB体系结构

本地EJB体系结构如图1所示。如前所述,三层是:UI层、中间层和EIS层。UI层通常由模型视图控制器(MVC)框架提供。业务层由Web层对象可以直接访问的“业务方法”接口提供,而无需使用EJB API。业务对象是具有本地接口的无状态会话bean,运行在EJB容器中,并提供事务管理、线程管理和角色基础安全。所有的数据访问都将通过“经典”J2EE体系结构中的实体bean实现。容器管理持久化(CMP)实体bean被认为是最好的选择。java事务API(JTA)通过EJB容器提供了交易协调EIS层访问。

轻量级容器架构

如图2所示,轻量级容器还使用MVC框架实现Web层。Spring框架可以使用专用的Web框架如StrutsWebWork,或可以通过轻量级容器管理与业务目标紧密结合。所有的业务对象是普通的java对象(POJO的)运行在轻量级容器。轻量级容器通过调用一个面向方面的编程(AOP)拦截器提供企业服务。这样,它可以在业务方法执行之前或之后透明地编织附加行为[ 1 ]。由于轻量级容器依赖于AOP拦截器,所以不需要依赖容器API,因此它们可以在任何容器之外使用。

图1 -展示所有三个核心构建块的本地EJB体系结构(1)

为了获得最佳的结果,业务对象应该只通过它们的接口来访问。数据访问可以使用JDBC或轻量级对象/关系(O / R)映射层来提供透明持久性。EIS层与本地EJB EIS层相同。

Spring 框架

目标是准确、经济、高效地生成Web应用软件,强调一些目标:简单性、可测试性和可移植性是很重要的。开发和维护代码越简单,项目从长远来看就越有成本效益。EJBs是很复杂的,需要一个EJB容器,从而转化为一个高端应用服务器的需要。应用服务器的必要性也增加了使用EJB [ 2 ]管理的复杂性。轻量级容器只需要servlet引擎。这也解决了可移植性的问题。EJB组件是专门为EJB容器的书面和依赖EJB API。由于非

轻量级容器的入侵性,为轻量级容器设计的业务对象可以在容器之外运行。测试的容易性也大大影响了画面。

图2——演示了实现Web层的MVC框架的EJB轻量级容器(1)。

因为实现类依赖EJB容器来测试EJB的业务逻辑是困难的。这是不是与轻量级框架的情况下,由于业务对象是POJOPOJO的易于单元测试在应用服务器,甚至可以把JUnit来协助测试。最后的决定因素是个人因素;第一作者曾试图学习过去实现EJB体系结构,并且一直发现它非常混乱和迟钝。与Spring框架的工作不到一个星期后,他很容易就能实现一些比较复杂的功能,他从来没有能够实现使用EJBSpring框架直观得多。Spring框架如何提供必要的基础设施而不需要EJB的复杂性?关键是Spring框架实现的控制反转(IOC)类型。控制概念的颠倒很容易被认为是好莱坞的原则:“不要给我们打电话,我们会叫你”[3]。

IOC有两种主要类型:依赖查找和依赖注入,如下面的图3所示。

图3 -控制层次结构的反转(1)

依赖查找具有容器提供回调组件,和一个查找上下文。因此,每个组件都使用容器API来查找资源。EJB使用IoC依赖查找表,管理的对象是负责做自己的查找。“依赖注入用于配置的基本原则是应用程序对象不应该负责查找它们依赖的资源或合作者。相反,IOC容器应该配置对象,将应用程序代码中的资源查找外部化到容器中。(1)“容器完全负责依赖查找,不依赖于特殊容器API或接口。查找完全删除了应用程序代码,对象在容器外很容易使用,并且不需要特殊接口。依赖注入有两种类型:注入注入和构造函数注入:设置注入通过JavaBean属性表示依赖关系。在对象在处理任何业务方法之前,在对象实例化后立即调用设置方法,因此,没有与这些属性相关的线程问题。不再需要异常处理,因为容器可以处理配置时间错误。构造函数注入组件通过构造函数参数表示依赖关系。Spring框架提供了对依赖项注入和构造函数依赖注入的支持。演示程序中有许多依赖注入的例子。

Spring可以作为J2EE Web应用程序的业务对象层或中间层的主干。Spring提供了一个Web应用程序上下文概念,它是一个强大的轻量级IOC容器,可以无缝地适应Web环境。它可以从任何Web层,无论是Struts、WebWork、Tapestry访问,JSF,Spring Web MVC或自定义解决方案[ 3 ]。Spring框架被用作演示程序的业务服务层。在试验了StrutsJSF之后,SpringWeb MVC被实现为表示层。SpringMVC比此时的StrutsJSF更直观。

EIS层由一个MySQL数据库来表示。体系结构的最后一步是决定如何实现数据访问对象和数据持久化。经过深入研究,发现Hibernate O/R映射工具是相对稳定的,通过Spring框架的大力支持,并面向属性的编程XDoclet支持(解释在后文)。使用Hibernate的其他好处是,它具有非常直观的浅学习曲线,以及拥有自己的Hibernate查询语言[ 5 ]。

开发环境

为了帮助发展,我们研究了许多工具。Eclipse IDE之所以被使用,是因为它是开源的,并且有一个非常大的支持组。Eclipse还集成了项目中使用的其他三个开发工具的支持。自动化构建工具Ant是开源的,并且得到广泛支持。它集成到Eclipse IDE中,并允许一致的构建过程。因为这个开发环境是针对团队而不是个人发展的开发商,一个SourceForge帐号注册主机应用程序开发。一些版本控制工具进行了研究,包括SourceSafe,颠覆,和CVS。它被认为是一个非常好的版本控制工具,但目前还没有得到广泛支持,还需要一些附加的插件来处理Eclipse。CVS被用作控制版本化工具。虽然没有必要将持续集成Builder这个单独的项目,CruiseControl的成立做持续集成构建的所有项目在生产现场。CruiseControl允许开发人员确定建设问题几乎立即,因为它是自动的,没有成本的开发商。Maven是用来自动生成一个项目管理网站。最后,Tomcat被用作servlet容器。

为了演示Spring框架的许多不同功能,创建了一个基本但灵活的问题跟踪系统。有应用称为“启动AppFuse“春天的Web应用程序开发。AppFuse的特点包括容器管理的认证(CMA),记得我,自注册,密码提示和gzip压缩。AppFuse也有蚂蚁,XDoclet,施普灵河支持,Hibernate(或iBATIS)、JUnit、仙人掌、StrutsTestCase、canooWebTestStruts的菜单,显示的标签库,OSCache,JSTLStruts(或Spring MVC)[ 4 ]。

SpringBeanFactory是控制特征的弹簧反演的基础与应用。“BeanFactory提供一种任何性质的管理豆高级配置机制,利用潜在的任何存储设备(3)。“ApplicationContext的基础上添加其他功能的BeanFactory。BeanFactory提供配置框架和基本功能,与应用添加增强能力,他们中的一些人也许更多的J2EE和企业中心。一个应用是一个完整的超集的BeanFactory。下面是在演示程序的action-servlet.xml文件中找到一个简单的bean定义的例子,它是整个应用的一部分。

lt;bean id='projectStatusFormController' class='com.panogenesis.webapp.action.Proj ectStatusFormController' autowire='byName'gt;

lt;property name='commandName'gt;

lt;valuegt;projectStatuslt;/valuegt;

lt;/propertygt;

lt;property name='commandClass'gt;

lt;valuegt;com.panogenesis.model.ProjectStat uslt;/valuegt;

lt;/propertygt;

lt;property name='validator'gt;

lt;ref bean='beanValidator'/gt;

lt;

全文共14596字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[9166],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。