1. 什么是seam
根据JBOSS官方网站上的介绍,seam是一个JAVA EE 5平台的轻量级开发框架,JAVA EE 5平台下有那么多的框架我们为什么还需要一个在JAVA EE5 规范之外的seam框架呢?我们把seam看作一个原本应该包含在JAVA EE规范当中确没有被加入的框架.它为所有企业及开发中用到的组件提供一个统一的和谐的编程模型,它简化了基于状态的应用共和业务处理过程驱动的应用程序开发.
这篇文章中我将会向大家介绍seam是如何简化企业级应用开发的,我会使用几个web应用程序作为我们的讲解用例,但是在开始研究代码之前,我首先说明一下seam都做了些什么和seam的核心设计理念,这些内容将会帮助你更好的理解这篇文章的内容.
1.1. 黏合和增强JAVA EE规范下的各种技术
EJB 3.0 和 JSF 1.2 是JAVA EE5 平台下最为核心的技术.EJB3是一个轻量级的,基于POJO的开发框架,它主要着眼与业务处理和数据持久化,JSF是一个面向组件的MVC web开发框架,大多数JAVA EE 5平台下的应用都使用EJB处理业务层和数据持久层,使用JSF技术处理展示层,但是虽然EJB和JSF两种框架所提供的服务是互补的,但是由于他们被设计成两个独立的框架,所以他们始终无法完美的整合到一起,比如EJB3使用注解而JSF确使用XML,EJB3的组件和JSF的组件在框架级别上是无法感知到对方的.如果想是JSF和EJB3一起工作你不得不编写façade对象来把业务层和展示层连接到一起,这些技术间的黏合正是seam所提供的能力.seam把你从编写façade对象中解脱出来,seam提供了一个和谐的,基于注解的EJB3-JSF黏合剂,使用几个简单的注解可以使seam中的ejb3直接作为JSF页面的backing bean,甚至直接响应页面上的动作事件.seam使开发者可以为所有组件使用带有注解的POJO,和其它web开发框架相比,开发同样的功能使用seam更为简单而且需要写更少的代码,包括java和XML代码
Seam同时也简化了实现JSF特殊任务的能力,比如,JSF的一个最主要的抱怨就是JSF依赖于HTTP POST,这样为JSF页面添加书签就变的很困难,使用seam创建一个restful风格的页面确是非常容易的事情,seam提供了一组标签和注解来增强JSF页面的功能.,同时,seam增强了EJB3组件为seam POJOs ,和把展示层的状态扩展到了业务层,此外seam还整合了许多其它的顶级框架,比如JBPM,iText,Spring等,seam不是简单的把他们连接到一起,而是向增强EJB3+JSF一样来增强他们.
1.2. 为ORM设计的WEB开发框架
对象-关系型映射被广泛应用在企业级开发当中,但是当前大多数web开发框架都不是为ORM设计的,他们没有从一个请求开始直到生成响应的整个过程中一直维护数据持久上下文,这将导致很多数据持久层的错误,比如使用hibernate你就不得不在展示层使用opensessioninviewfilter来支持延迟加载特性,同时这样的web开发框架会产生大量丑陋的DTO.
使用seam你再也不用写那些丑陋的DTO,同时你可以随意在程序中使用延迟加载而不用任何特殊配置,而且ORM的性能也会得到进一步提高,(request->response之间seam维护的数据持久上下文是一个天生的缓存).
此外,seam把ORM层,业务层和展示层完美整合到了一起,这就意味着我们可以在展示层直接呼叫持久层服务,为页面表单使用持久层的数据校验注解和把数据库异常信息直接显示到展示层的页面上
1.3. 为有状态应用开发而设计
Seam是为有状态应用程序而设计的框架,web应用程序天生就是多用户的,而商业化的程序天生就必须有状态和事务管理功能.可是大多数web开发框架更侧重于无状态的web应用程序开发,你不得不小心的处理http sesssion来维护用户的状态,这样你的程序不但会被这些与业务逻辑不相关的丑陋代码打乱而且可能还会带来性能问题.
Seam中所有应用程序基础组件都是天生有状态的,他们比HTTP session更加容易使用,因为seam会自动维护他们的状态.在seam应用程序中再也不用写那些操作session来进行状态维护的丑陋代码了----只需要用注解表示出组件的存取范围,生命周期方法和其它状态属性即可,这样你就可以更加专著与你的业务逻辑,与http session相比Seam的有状态组件提供了更加出色的可调节性.比如说你可以在同一个http session当中包含多个seam会话,每一个会话都表示一个业务处理流程的状态.
此外,持久层的缓存和事务会自动连接到seam的状态管理上,seam自己在内存中持有数据库的update数据,只有在一个业务会话结束的时候数据才会被提交到数据库中.在复杂的业务逻辑中这种内存式的数据缓存策略极大的减少了数据从数据库的装载量.同时也维护了业务处理的完整性.
把我门以上提到的所有内容综合起来看,seam通过整合JBPM在web应用程序的状态管理上迈出了一大步,你可以为组织架构中的不同人指定不同的工作流程,使用这些不同的工作流程来驱动你的web应用程序,而不是传统的基于页面事件和数据的web应用.
生命式上下文组件
在seam中每一个有状态的组件都有一个存取范围或上下文,比如说,一个购物车组件是在购物会话开始的时候被创建,在下订单会话结束后被销毁,因此,这个组件在整个购物过程会话中都是有存活的,只时候你只需要简单的在这个组件上使用seam注解,seam会自动维护这个组件的生命周期.
Seam提供了一些不同的状态上下文,从一个简单的请求到一个复杂的多页面会话,一个http session范围,甚至一个长时间运行的复杂的业务处理过程.
1.4. 支持web2.0
Seam专为web2.0提供了优化,他提供了多种方式的Ajax支持,从内制Ajax组件到为现有组件添加Ajax能力,到自定义可以直接从页面访问服务器上seam组件树的javascript库.seam提供了一个高级别的并发Ajax请求处理模型
Ajax应用的一个挑战就是数据库的负载量,一个ajax应用比一个不是ajax的应用发送的数据库请求要多的多,如果所有的ajax请求都由数据库来亲自处理那么数据库的压力会非常大,只是后维护在seam程序内存中的持久化上下文相当于一个内存缓存,它可以为长时间运行的复杂业务逻辑持有数据,从而缓解数据库服务器的压力.
同时,web2.0应用程序往往会使用复杂的数据模型,对于这些应用程序来说数据的延迟加载是至关重要的,否则一个简单的查询可能会导致整个数据库的数据被加载,到目前为止,seam是唯一一个完美支持web层数据延迟加载的web层框架.
1.5. 依赖DI的POJO服务
Seam框架之所以是一个轻量级的框架是因为它大量采用POJO作为服务组件,在seam程序中没有任何框架的特定接口或抽象类.这些POJO通过当前流行的DI进行组织,在这种设计模式下seam负责POJO的生命周期,当一个POJO需要另一个POJO时候只需要使用注解表示就可以了,seam负责依赖对象的实例化和注入等内容
Seam对DI进行了增强,支持双向注入,双向注入被广泛应用在seam应用程序中.
1.6. 例外情况配置
Seam应用程序开发之所以如此简单是因为它的一个关键设计理念—例外配置,例外配置是指seam框架本身为组件提供了一组默认行为,开发者只需要为那些不是默认行为的组件配置例外情况就可以了.
分享到:
相关推荐
JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者提供了一个集成化的环境,其中整合了多种技术规范,比如EJB3、JSF、JPA、SessionBean、MDB和...
### 一、什么是JBoss Seam? JBoss Seam被定位为“企业Java应用程序框架”,它是专为企业级Java Web应用程序设计的框架,能够将Java EE和JSF(JavaServer Faces)紧密结合,提供一个统一且强大的开发平台。Seam被视...
《JBoss Seam:超越Java EE的简易与强大》是一本深度探索JBoss Seam框架的权威著作,由Michael Yuan和Thomas Heute共同撰写。本书聚焦于JBoss Seam框架,旨在为读者提供一个全面、深入的理解,以掌握其在企业级应用...
本章主要介绍Seam的基本概念以及如何快速搭建环境,通过一系列示例加深对Seam的理解。 ##### 1.1 试试看 这一节主要介绍了如何在JBoss AS和Tomcat服务器上运行Seam示例,帮助开发者熟悉Seam的基本配置和运行环境。...
Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3,Inversion of Control (IoC)和Aspect-Oriented ...
- **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和服务,帮助开发者快速构建复杂的Web应用。 - **本教程**:主要介绍了JBoss Seam的基本概念、核心组件以及通过一系列示例项目来学习Seam的...
### 深入浅出JBoss Seam:整合与强化Java EE框架 #### 一、引言 JBoss Seam是一款基于Java EE 5.0的轻量级框架,它旨在简化企业级Web应用的开发过程,并增强应用的可扩展性和开发者的生产力。本文将详细介绍JBoss ...
- **控件组件**:Seam 提供了一系列 UI 控件,用于简化前端开发。 - **布局管理**:支持灵活的页面布局。 **1.6.5 Seam Debug 页面** - **调试工具**:Seam 提供了一个专用的调试页面,帮助开发者诊断问题。 - **...
JBoss Seam 是一个开源的应用框架,它结合了JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0 和其他Java EE组件,旨在简化企业级开发。这个文档集合包含了对Seam及其相关技术...
JBoss Seam 是一款基于 Java 的企业级应用框架,它简化了应用程序的开发过程,使得开发者能够更专注于业务逻辑而非底层技术细节。通过本教程,读者可以快速掌握所需工具的安装步骤,并学会如何搭建完整的开发环境。 ...
【JBoss Seam】是Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)3.0、JPA(Java Persistence API)以及一系列其他技术,为开发人员提供了一个强大的全栈式解决方案。Seam...
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
JBoss Seam 是一个开源的企业级开发框架,它旨在简化Java EE应用的开发过程,特别是在Web和富互联网应用程序(Rich Internet Applications, RIA)领域。Seam 2.0是其重要的版本,提供了许多增强的功能和改进,为...
《Beginning JSF2 APIs and JBoss Seam》是一本深入介绍JavaServer Faces 2(简称JSF2)及其相关API以及JBoss Seam框架的专业书籍。作者Kent KaIok Tong凭借其在Java Web开发领域的深厚经验,为读者提供了详尽的技术...
JBoss Seam是一个旨在简化企业级Web应用开发的轻量级框架,它补充和完善了Java EE 5.0的标准。Java EE 5.0虽然包含了EJB 3.0和JSF 1.2等核心框架,但它们各自独立,缺乏统一的编程模型。Seam的出现就是为了消除这种...
Seam在JAAS和JBoss规则之上,创建了一个新的基于规则的安全框架。甚至有用来渲染PDF、在线电子邮件和图表及wikitext的JSF标签库。 Seam组件可以同时作为一个Web Service进行调用,异步地从客户端JavaScript或者...
JBOSS_SEAM配置