免费论文查重: 大雅 万方 维普 turnitin paperpass

简析框架基于J/EJB3JBossSeam运用框架与运用

最后更新时间:2024-02-09 作者:用户投稿原创标记本站原创 点赞:21630 浏览:95615
论文导读:X和jBPM于一体的全新应用框架,下面介绍Seam的主要特点。1)基于EJB3.0的开发EJB3.0摈弃了传统EJB粗粒度和重量级的性质,转变为拥有细粒度注释的轻量级POJO。因此,Seam框架中表示层组件和业务逻辑组件都是EJB。2)基于AJAX的远程层Seam提供了内置的Jascript远程访问层,允许开发者通过Ajax异步地从浏览器端调
摘要:JBoss Seam是一个强大的用来构建下一代Web 2.0的应用程序框架。JBoss Seam以EJB3.0为核心,扩展POJO加注释的设计模式到整个Web应用中。该文主要介绍 JBoss Seam的框架特点和工作原理,并通过一个简单的实例说明了Seam的基本用法,使读者对Seam框架有了一个清楚的了解。
关键词:Seam;EJB

3.0;J;POJOs;注释

中图法分类号:TP393.09 文献标识码:A文章编号:1009-3044(2012)30-7236-04
Ja EE5的核心框架定义了三个层次的标准实现:表示层采用J(Ja Server Faces),业务层和持久层分别采用EJB3.0的Session Bean和Entity Bean。EJB3.0是基于POJO(Plain Old Ja Objects)的业务服务和数据库持久化轻型框架,J是基于MVC的Web应用框架,两者虽然功能互补,但设计理念相对独立,很难在Ja EE5框架中进行整合。本文将介绍JBoss 针对Ja EE5标准所实现的应用开发框架——JBoss Seam。正如它取其“缝合”的意义,Seam采用注解方式整合了EJB 3.0和J这两个Ja EE5核心标准。
1 Seam框架分析

1.1 Seam的框架特点

Seam是一个集J、EJB

3.0、AJAX和jBPM于一体的全新应用框架,下面介绍Seam的主要特点。

1) 基于EJB

3.0的开发

EJB3.0摈弃了传统EJB粗粒度和重量级的性质,转变为拥有细粒度注释的轻量级POJO。因此,Seam框架中表示层组件和业务逻辑组件都是EJB。
2) 基于AJAX的远程层
Seam提供了内置的Jascript远程访问层,允许开发者通过Ajax异步地从浏览器端调用EJB3.0的Session Bean组件。同时,Seam提供的Ajax解决方案隐藏了XMLHttpRequest API和XML序列化的复杂性。
3) 富状态应用程序
传统的Web应用程序中,Http Session是管理Web应用状态的唯一方法。Seam框架为开发者提供了多种富状态的上下文(Context),支持从会话状态到业务过程的多种粒度,让开发者在Http Session之外有了更多状态管理的选择。
4) 过程驱动应用程序
企业级应用存在许多业务流程和规则,需要实现复杂的工作流和页面流,Seam框架通过JBoss jBPM对业务过程管理提供强大支持。

1.2 Seam的工作原理

Seam使用带注释的POJOs作为组件进行开发,下面从几个方面介绍Seam的工作原理。
1) 双向注入
Seam使用POJO作为服务组件,并采用依赖注入(DI)源于:论文模板www.7ctime.com
联结所有POJO组件。当某组件需要使用另一个组件时,通过注释(Annotation)向Seam声明依赖。Seam依据应用当前状态将这个依赖组件注入到所需组件中。
同时,Seam扩展了依赖注入的概念,允许进行双向注入(bijection)。一方面,组件可以作为一个变量被注入。另一方面,组件被Session Bean“抛还”给Seam,返回到J中。组件利用@In或者@Out注释可以在J页面和业务逻辑之间双向地传递数据。
2)
Seam引入与注释组合,为POJO对象提供功能支持。Seam构建的方式是采用标准的Ja EE体系。类中定义拦截方法时,需要使用@AroundInvoke和@InvocationContext注释。@AroundInvoke注释用于指定具体的检查方法,检查操作完成后,利用ic.proceed()返回到被拦截检查的业务方法。类通过配置文件和框架代码进行自动调用,实现执行Session Bean中的业务逻辑时进行拦截检查。
3) Seam的多粒度上下文
Seam在传统上下文的基础上,添加了多种不同粒度的上下文,并自动管理上下文和组件状态。下面重点介绍Seam中两个重要的上下文。
会话 (Conversation): 一个会话通常包含了许多相关或串行的用户请求。比如,一次交谈往往需要用户完成多次请求并响应的周期。典型的案例是向导式对话框,或者电子商务中的购物车。 Seam使用会话上下文管理这些交谈,解决了页面回退、刷新、重复提交、多窗口浏览等带来的问题。
业务流程(Business Process): Seam 还内置了在应用程序中集成业务流程管理的功能。一个业务流程要求工作流完成两个操作:一是创建一个事务,二是批准这个事务。 两个事务都需要与应用程序进行一次或者多次交谈才能完成它们的任务。Seam 可以简单明了地定义这些任务和交谈。
4) 基于Seam的三层架构
下面介绍Seam如何将嵌入三层架构中。拦截过程对于用户基本是透明的。用户请求的完整生命周期如图1所示。
①Seam集成MVC
大多数应用框架需要利用其特有的Servlets实现MVC架构,Seam与此不同,它通过在请求中加入和生命周期控制各组件,维持原有J请求的生命周期。
在web.xml中,Seam加入了: SeamListener。此在整个生命周期中被最先请求,并为Lifecycle对象设置ServletContext和Session,Lifecyle类直接保存用于在web层管理状态的上下文组件。接着SeamPhaseListener对象被请求,SeamPhaseListener对象用于与FacesServlet交互。在faces-config.xml中,SeamPhaseListener已经被定义为FacesServlet生命周期的一部分,用于进一步管理上下文和存储请求状态。此将数据从表现层传入到业务逻辑层。②Seam集成EJB3.0
业务逻辑层的集成使用SeamInt论文导读:表单中的值进行验证。如果与约束不符,J刷新页面。否则,J将表单中的数据与UserEntityBean中对应属性进行绑定。3)J请求Seam处理register变量,Seam在Stateless上下文中找到无态BeanRegisterAction,返回给J。J唤醒register()行为监听方法。4)Seam拦截该方法调用,将Session上下文中的User实体注入到方
erceptor包裹调用EJB的请求,此包裹所有调用POJO EJB的请求,在生命周期中,每当包裹请求时,就间接访问了在Application Context中存储的组件对象。虽然组件对象包含了访问的EJB,但是它不是简单的包裹器对象。组件对象持有所有域级别的对象——从注入域到数据模型对象,再到验证器。基本涵盖了任何与POJO属性级别相关的Seam注释。而且,另一个较大的扩展是包含了其他默认的。这些处理从双向注入、验证到业务管理的所有事情。
2 Seam的应用

2.1任务要求

用户注册程序要求输入用户名、真实名称和, 将信息存入数据库。注册成功,显示已注册页面,否则,显示失败页面。本例虽不能完全展示Seam的全部特性,但展示了Seam使用带注释的POJOs进行开发,并集成J和EJB3的特性。

2.2程序结构

该程序需要建立:
1) 两个页面(register.jsp, registered.jsp)。
2) 一个实体Bean(User.ja):保存用户数据。
3) 一个无态的Session Bean(RegisterAction.ja):作为J的action listener。程序结构由图2所示:
图2 程序结构图

2.3 代码实现

2.4 程序的工作流程

1) 当register.jsp中的表单被提交后,J请求Seam处理u源于:毕业论文致谢格式www.7ctime.com
ser变量。此时任何Seam 上下文中不存在与user变量名绑定的值。Seam实例化user组件并存储在Seam Session 上下文中,随后将User Entity Bean的实例返回给J。
2)Hibernate验证器按照User Entity Bean中的约束定义对表单中的值进行验证。如果与约束不符,J刷新页面。否则,J将表单中的数据与User Entity Bean中对应属性进行绑定。
3) J请求 Seam处理 register变量,Seam在Stateless 上下文中找到无态Bean RegisterAction,返回给J。J唤醒register()行为监听方法。
4) Seam拦截该方法调用,将Session上下文中的User实体注入到方法中。
5) register()检查注册用户名是否已存在,若存在,则返回FacesMessages附带的错误信息及null值,刷新页面。若无此用户名,则重定向到“/registered.jsp”。J生成页面时仍请求Seam从Session上下文中返回User实体。
3 结束语
JBoss Seam进一步简化了Ja EE5,建立了更加集成化的EJB3和J,它的框架设计使 Web应用具有强壮性和伸缩性。JBoss Seam已成为现今流行的 Web应用框架。
参考文献:
JBoss Seam文档[EB/OL].http://labs.jboss.com/portal/jbossseam/.
Michael Juntao Yuan,Thomas Heute.JBoss(R) Seam: Simplicity and Power Beyond Ja(TM) EE[M].US:Prentice Hall PTR,2007.
[3] Joseph Faisal Nusairat.Beginning JBoss? Seam:From Novice to Professional[M].US:Apress Inc,2007:131-140.