华佗小知识
您的当前位置:首页黄科大文献综述

黄科大文献综述

来源:华佗小知识


单位代码 01 学 号 1303010030 分 类 号 TP315 密 级

文献综述

JBoss Seam框架研究及应用

院(系)名称 专业名称 学生姓名 指导教师

信息工程学院 计算机科学与技术

李慧秀 张 亚 娟

2015年 3 月 13 日

黄河科技学院毕业设计(文献综述) 第I页

JBoss Seam框架研究及应用

摘 要

软件框架对于企业级Java开发者来说,是非常有用的工具。它们被广泛地用来组装可重用的软件组件和服务。每个框架都提供了一系列的设计模式、APIs和组件模型——用于构建在框架之上的应用程序。一个典型的企业级Java应用程序,可以同时使用多个框架。所以,Java EE开发者们的主要竞争能力之一,就体现在使用这些框架的能力上。然而,存在太多框架的缺点在于,每一种框架都提供了不同的编程模型(或组件模型)。而要在一个Web应用中使用不同的组件模型,开发人员一般需要写很多代码(例如数据传输对象、组件管理等)以及配置文件,这样将会大大地降低开发效率。

针对以上这些问题,新的框架JBoss Seam也就孕育而生。它是Java EE 5.0的一个轻量级的框架,在Java EE 5.0框架的上层,为所有的在企业Web应用中的组件提供了一个统一的、易于理解的编程模型。与其他Web框架开发的应用相比,Seam应用概念简洁,同样的功能却需要较少的代码。它能够更有效的帮助开发人员进行工作,有很好的扩展性,操作方便。

关键词:JBoss Seam框架,Java EE,API,WEB,XML

黄河科技学院毕业设计(文献综述) 第II页

目 录

1 绪论 ........................................................................................................................................ 1 2 JBoss Seam技术 .................................................................................................................... 2 2.1 JBoss Seam概述 ............................................................................................................... 2 2.2 JBoss Seam的工作原理 ................................................................................................... 2 3 JBoss Seam技术的应用 ........................................................................................................ 4 3.1 JBoss Seam应用概念 ....................................................................................................... 4 3.2 JBoss Seam应用组件 ....................................................................................................... 4 3.3 JBoss Seam发展前景 ....................................................................................................... 4 3.4 JBoss Seam 的工作流程 ................................................................................................. 5 4 JBoss Seam优缺点 ................................................................................................................ 6 结 论 ........................................................................................................................................ 7 参考文献 .................................................................................................................................... 8

黄河科技学院毕业设计(文献综述) 第 1 页

1 绪论

Seam是个开源的深度集成的Java EE 5框架。它通过把JSF与EJB3.0组件合并,为开发Web应用程序提供统一的组件模型。开发人员无需学习框架的组件管理APIs而使用统一的Seam组件,减少了编写集成框架衔接、配置代码量[1]。

Seam的目标就是减少“胶水”代码,整合现有的各种框架,易于测试而重新设计,为企业应用提供一个一致的编程模型。因为所有的Seam组件都是注解过的POJO,它们易于进行单元测试。开发者仅仅通过利用常规的Java new关键词来构造实例,然后在测试框架(例如JUnit 或者TestNG)中运行任何方法。如果需要测试多个Seam组件的交互,开发者则逐个实例化这些组件,然后手动建立它们的相互关系(也就是显示地使用setter 方法,而不是依靠Seam依赖注入功能)[2]。

黄河科技学院毕业设计(文献综述) 第 2 页

2 JBoss Seam技术

2.1JBoss Seam概述

JBoss Seam是一个为Java EE 5.0量身定制的轻量级的框架。简单地说,我们把Seam看成本应该包括在Java EE 5.0中的一个“遗漏的框架”。它位于Java EE 5.0框架的上层,为所有在企业Web应用中的组件提供一个一致的、易于理解的编程模型。它同样使得基于状态的应用程序和业务流程驱动的应用程序的开发易如反掌。换句话说,Seam的一切都是围绕开发者的开发效率和应用扩展性而存在的。JBoss Seam框架统一组件模式,用其开发应用程序简单、无分层之忧,简化了工作,程序员可把精力主要放在业务逻辑组件的实现上,而非在架构、分层、模式和基础设施搭建的工作上,提高了开发效率,有利于系统的实现[3]。

JBoss Seam是EJB3和JSF中间的粘合剂,这是JBoss Seam最基本的和最广泛的应用。通过被Seam管理的组件,Seam允许这两个框架之间无缝(不是有意双关的)的集成。它为整个web应用拓展了基于注解的EJB3 POJO编程模型。在层与层之间,没有了必需的手动JNDI查找,没有了冗长的JSF支持bean的声明,没有了过多facade方法,没有了艰辛的对象传递[4]。

Seam为应用程序中所有的业务逻辑定义了一种统一的组件模型。Seam组件可能是有状态的,包含与几个定义良好的上下文中任何一个相关联的状态,包括长时间运行上下文、持久化上下文、业务流程上下文,以及用户交互中能够跨多个Web请求保存的对话上下文。

2.2 JBoss Seam的工作原理

Seam中的表现层组件和业务逻辑组件之间并没有区别。 你可以根据你设计的任何架构给应用程序进行分层,而不是强制将你的应用程序逻辑硬塞进一个由你目前在使用的任何框架组合所强加给你的不适当的分层配置中。

与简单的Java EE或者J2EE组件不同,Seam组件可以同时访问与Web请求相关的状态,以及保存在事务资源中的状态(而不必通过方法参数手工传播Web请求状态)。

黄河科技学院毕业设计(文献综述) 第 3 页

你可能反对说由旧式的J2EE平台强加给你的应用程序分层是件好东西,没有什么可以阻止你利用Seam创建一个相当的分层架构— 区别在于,你要自己架构应用程序,并决定有哪些层,以及它们是如何合作的[5]。 1、 双向注入

Seam使用POJO作为服务组件,并采用依赖注入(DL)联结所有POJO组件。当某组件需要使用另一个组件时,通过注释(Annotation)向Seam声明依赖。Seam依据应用当前状态将这个依赖组件注入到所需组件中。

同时,Seam扩展了依赖注入的概念,允许进行双向注入(bijection)。一方面,组件可以作为一个变量被注入。另一个方面,组件被Session Bean“抛还”给Sean,返回到JSP中。组件利用@In或者@Out注释可以在JSF页面和业务逻辑之间双向传递数据。 2、

Seam引入与注释组合,为POJO对象提供支持。Seam构建的方式是采用便准的Java EE体系。类中定义拦截方法是,需要使用@AroudInvoke和@InvocationCoutext注释。@AroudInvoke注释用于指定具体的检查方法,检查操作完后,利用ic.proceed()返回到被拦截检查的业务方法。类通过配置文件和框架代码进行自动调用。实现执行Session Bean中的业务逻辑时进行拦截检查。 3、Seam的多粒度上下文

Seam在传统上下文的基础上,添加了多种不同粒度的上下文,并自动管理上下文的组件状态。下面重点介绍Seam中两个重要的上下文。

会话(Conversation):一个会话通常包含了许多相关或串行的用户请求。比如,一次交谈往往需要用户完成多次请求并响应的周期。典型的案例是向导式对话框,或者电子商务中的购物车。Seam使用会话上下文管理这些交谈,解决了页面回退、刷新、重复、提交、多窗口浏览等带来的问题。

业务流程(Business Proeess):Seam还内置了在应用程序中集成业务流程管理的功能。一个业务流程要求工作流完成两个操作:一是创建一个事务,二是批准这个事务。两个事务都需要与应用程序进行一次或者多次交谈才能完成它们的任务。。Seam可以简单明了地定义这些任务和交谈[6]。

黄河科技学院毕业设计(文献综述) 第 4 页

3 JBoss Seam技术的应用

3.1 JBoss Seam应用概念

Seam走了一条与早期的Spring框架不同的路。Seam为被它集成的所有框架提供了一个统一的组件模型,开发人员可以使用统一的Seam组件,而不需要学习每个框架的组件管理APIs。对于开发人员来说,Seam API与被Seam集成的框架相比,有非常大的改进。Seam的注释(annotation)/API设计和Java EE5非常相似[7]。 3.2 JBoss Seam应用组件

编写一个Seam web应用概念上很简单。你只需要编码出下列组件:

(1)实体对象代表数据模型。实体对象可能是JPA或者Hibernate中的POJO对象。它们自动地映射到关系数据库表。

(2)SF web页面展示了用户界面。页面通过表单捕获用户的输入,并且显示结果。表单域与其数据显示数据库表,这些表被映射到实体bean或者实体bean的集合上。

(3)EJB3 会话bean或者注解过的Seam POJO可以作为JSF Web页面的UI事件处理器。它们处理封装在实体bean中的用户输入,为下一步(或者页面)生成显示的数据对象[6]。

这些组件均由Seam自行管理,它们在运行时被自动注入到正确的页面或者对象。例如,当用户单击按钮提交一个JSF表单,Seam就会自动解析表单域并构造一个实体bean。然后,Seam将实体bean传入同样被Seam构造的事件处理器会话bean中来处理。开发者不需要在代码中管理组件的生命周期和组件之间的相互关系。依赖处理过程中,没有样板代码和XML文件[8]。 3.3 JBoss Seam发展前景

Seam集成的框架可能成为“幕后工作者”。在某些情况下,你在使用Seam的同时,却要“奔波”在其它相互竞争的框架之中——与Java EE允许相同的API有多种实现是同样的方式[9]。

黄河科技学院毕业设计(文献综述) 第 5 页

在Seam中,你可以通过很多方式使用Ajax。初学者可以使用Seam集成的Ajax JSF组件包,比如Ajax4jsf、RichFaces和IceFaces。它们提供了一系列Ajax功能的JSF控件,包括输入框、数据表格、交互面板、拖放面板等,你可以直接将它们用在你的页面上。这些Ajax控件允许你开发Ajax Web应用程序,而无需写一行JavaScript代码。Seam已经帮你做好了所有和Ajax整合的工作,使得建立Ajax应用比在单纯的JSF环境中更容易。下面的例子显示了如何使用Ajax数据输入框,当你离开输入框时,数据将被验证,同时无效的字段将高亮显示[10]。

考虑到开发人员想直接使用JavaScript取代JSF控件,Seam同样也整合了JavaScript和服务器端组件。你可以像调用本地JavaScript方法一样调用Seam组件的方法并且在本地使用返回值。开发人员也可以通过Seam服务整合其他流行的JavaScript库[9]。 3.4 JBoss Seam 的工作流程

(1)表单时,JSF请求Seam来解析名为user的变量。由于还没有值绑定到user 上(在任意的Seam)(在任意的Seam上下文中),Seam就会实例化user组件,接着把它保存在Seam会话上下文后,然后将 User 实体Bean实例返回给JSF。

(2)表单输入的值将由在user实体中所指定的Hibernate验证器来验证。 若有非法输入,JSF就重新显示当前页面。否则,JSF就将输入值绑定到user实体Bean的字段上。

(3)JSF请求Seam来解析变量register。Seam在无状态上下文中找RegisterAction 无状态的会话Bean并把它返回。JSF随之调用register()动作方法。

(4)Seam拦截方法调用并在继续调用之前从Seam会话上下文注入user实体。 (5)register()方法检查所输入用户名的用户是否已存在。若存在该用户名,则错误消息进入facesmessages组件队列,返回无效结果并触发浏览器重显页面。facesmessages组件嵌在消息字符串的JSF表达式,并将JSF facesmessage添加到视图中。

(6)若输入的用户不存在,\"/registered.jsp\" 输出就会将浏览器重定向到registered.jsp页。当JSF来渲染页面时,它请求Seam来解析名为user的变量,并使用从Seam会话作用域返回的user实体的属性值[11]。

黄河科技学院毕业设计(文献综述) 第 6 页

4 JBoss Seam优缺点

JBoss Seam应用程序的优点[12]: (1)适应快速开发、简化框架的趋势。 (2)数据绑定做的很出色。 (3)组件机制看起来相当好用。

(4)把数据库资源的管理和事务的封装完全隐藏起来了。 (5)对第三方框架的整合看起来比Spring更深入。 (6)提供了方便的代码生成器。 JBoss Seam应用程序的缺点[13]:

(1)model、HomeBean、ListBean和view的代码只能被生成到同一个包了,特别是大量的view代码在同一个目录下,如果项目大,就会带来很多不便。

(2)表的前缀在生成时,不能被除去。

(3)被生成的页面里的字段值都是英文的表名或列明,没有放在资源文件里,使用时每个页面都要改为对应的中文。

黄河科技学院毕业设计(文献综述) 第 7 页

结 论

JBoss Seam框架把JSF与EJB3.0组件进行合并为开发基于Web的应用程序提供了一个统一的组件模型,使得开发人员无需学习框架的组件管理APIs而直接使用Seam组件,同时无需编写太多框架集成衔接、配置代码,无分层之忧,使得开发人员将更多的精力集中于业务逻辑的实现上,提高了开发效率,也是开发人员更加便于学习与使用。并且Seam框架具备开发周期短、系统可扩展性强等优点,这也在很大程度上节省了时间,更加有利于开发。同时,Seam通过整合EJB3和JSF等一系列Java EE的规范,以及利用JDK5.0的Annotation技术,构成了一个完整的、一站式的企业应用开发解决方案,已经成长为可以和Spring Framework相提并论的开发框架之一。所以说Seam框架在未来肯定会有更好的发展。

黄河科技学院毕业设计(文献综述) 第 8 页

参考文献

[1] 徐明华,尼春雨. JSF编程实战导航[M]. 北京:清华大学出版社,2008. [2] Allen . Seam实战[M]. 北京:人民邮电出版社,2010.

[3] 郑阿奇. Java EE基础实用教程[M]. 北京:电子工业出版社,2009. [4] 铁手,程晓冬,. JSF实战. 北京:人民邮电出版社,2007. [5] 王映龙. Java EE实用教材[M]. 北京:中国人民大学出版社,2011. [6]

Joseph.

Faisal

Nusairat

Beginning

JBoss

Seam:From[J].

Novice

to

Professional,2007,(3):78-82.

[7] 惠刚. 基于JSF、Spring、Hibernate框架的web系统开发平台研究[D]. 安徽:合肥工业大学,2007.

[8] 范会联,张玉芳,张本成. 基于JBoss Seam的Web应用程序设计[J]. 微计算机信息,2007,(3):102-103.

[9] 谢运佳,王会进,钟瑞琼等. 一种轻量级的J2EE解决方案及其应用[J]. 微计算机信息, 2006,(9):223-225.

[10] 张彦芳,王春艳. Ajax技术及开发[J]. 中国科技博览,2013,(33):595.

[11] Joseph. Faisal Nusairat Beginning JBoss+Seam:From[J]. Novice to Professional, 2007. [12] 姬牧晨. 使用JBoss Seam实现Web测评系统[J]. 电脑知识与技术,2010(3):25-30. [13] 王庆梅,徐杰,张辉. Jboss Seam Web应用开发[M]. 北京:人民邮电出版社,2009.

因篇幅问题不能全部显示,请点此查看更多更全内容