我这是在一本书上看到的文章,推荐给大家看,喜欢seam的同志,可以去看下,真的不错!

 

Seam 为你的应用程序中所有的业务逻辑定义了一种统一的组件模型。Seam 组件可能是有状态
的,包含与几个定义良好的上下文中任何一个相关联的状态, 包括长时间运行上下文、持久化
上下文、业务流程上下文, 以及用户交互中能够跨多个Web 请求保存的对话上下文。
Seam 中的表现层组件和业务逻辑组件之间并没有区别。你可以根据你设计的任何架构给应用
程序进行分层,而不是强制将你的应用程序逻辑硬塞进一个由你目前在使用的任何框架组合所
强加给你的不适当的分层配置中。
与简单的Java EE 或者J2EE 组件不同,Seam 组件可以同时访问与Web 请求相关的状态,以及
保存在事务资源中的状态(而不必通过方法参数手工传播Web 请求状态)。你可能反对说由旧
式的J2EE 平台强加给你的应用程序分层是件好东西,没有什么可以阻止你利用Seam 创建一个
相当的分层架构— 区别在于,你要自己架构应用程序,并决定有哪些层,以及它们是如何合作
的。
将JSF 与EJB 3.0 整合
JSF 和EJB 3.0 是Java EE5 的两个最好的新特性。EJB3 是服务器端业务和持久逻辑的全新组件
模型。同时,JSF 也是表现层的一个优秀组件模型。不幸的是,这二者都无法独自解决所有的
计算问题。实际上,JSF 和EJB3 结合使用后运作得最好。但是Java EE5 规范并没有提供如
何整合这两个组件模型的标准方法。所幸,这两种模型的创建者都前瞻到了这种状况,并且提
供了标准的扩展点,允许对各自进行扩展,或者与其他解决方案集成。
Seam 将JSF 和EJB3 的组件模型合二为一,消除了胶合代码,使得开发者专注于业务问题。
编写“一切”都是EJB 的Seam 应用程序是有可能的。如果你习惯把EJB 当作是细粒度的所谓
“重量化”的对象,这可能会令你很吃惊。然而,从开发人员的角度来看,3.0 版本已经完全
改变了EJB 的本质。EJB 是一个细粒度的对象—没有什么东西会比注解的JavaBean 更复杂了。
Seam 甚至鼓励你使用会话Bean 作为JSF 动作监听者!
另一方面,如果你宁可不在这个时候采用EJB 3.0,不用勉强。事实上,任何Java 类都可以
是一个Seam 组件,并且Seam 提供了你期待从“轻量化”的容器,甚至任何组件、EJB 或者其
他东西中获得的所有功能。
集成AJAX
Seam 支持两个最好的、开源的基于JSF 的AJAX 解决方案:JBoss RichFaces 和ICEfaces。这
两个解决方案让你无需编写任何JavaSctipt 代码就可以为你的界面添加AJAX 功能。

Seam 也提供了内置的JavaSctipt 远程访问层,它让你异步地从客户端JavaScript 中调用组件,
而不需要中间的action 层。你还可以订阅服务器端的JMS 主题,并通过AJAX 的push 方法接
收信息。
假若不是有Seam 内置的并发和状态管理能力,以上这些方法将都无法很好地运作。这两种方
法确保服务器端能够安全而高效地处理多个并发细粒度的异步AJAX 请求。
将业务流程作为首要的基础建筑
Seam 可以选择通过jBPM 提供透明的业务流程管理。使用jBPM 和Seam 共同实现复杂的工作流、
合作和任务管理,简单到了让人难以置信的程度。
Seam 甚至允许你利用与jBPM 给业务流程定义所使用的相同语言(jPDL)来定义表现层页面流。
JSF 为表示层提供了非常丰富的事件模型。通过以完全相同的事件处理机制暴露与jBPM 业务
流程相关的事件,Seam 强化了这一模型,这就为Seam 的统一组件模型提供了统一的事件模型。
声明式状态管理
从EJB 早期开始,我们已经习惯于声明式事务管理和J2EE 声明式安全的概念。EJB 3.0 还引入
了声明式持久上下文管理。一个更广泛的管理状态问题--管理与某个特殊context 关联的状
态,有三个特例,它确保这个上下文结束时进行所有必要的清理。Seam 把声明式状态管理的
概念推进的远得多,并把它应用于应用程序状态(application state)。J2EE 应用程序一般
通过手工实现状态管理,通过获取和设置Servlet Session 和Request 属性。假若程序没能清
除Session 属性,或者在多窗口的应用程序中,与不同的工作流关联的Session 数据发生冲突,
这种状态管理的方法就会成为很多Bug 和内存泄漏的根源。Seam 有可能几乎完全消除这类Bug。
声明式应用程序状态管理通过Seam 定义的丰富的context model(上下文模型)而成为可能。
Seam 扩展了Servlet 规范—定义的上下文模型——请求、会话、应用程序—增加了两个新的上
下文— 对话和业务流程—,从业务逻辑的角度来看它们更具意义。
一旦你开始使用对话,将会惊讶于许多事情变得更加容易了。你曾经在像Hibernate 或者JPA
这样的ORM 解决方案中痛苦地处理过延迟的关联抓取吗? Seam 对话范围的持久化上下文意味
着你将几乎看不到LazyInitializationException。你曾经遇到过刷新(Refresh)按钮或者
后退(Back)按钮的问题吗?或者有过重复提交表单的问题吗? 有通过post-then-redirect
传播信息的问题吗?Seam 的对话管理解决了这些问题,甚至无需你真正去关注它们。它们都
是自Web 最早期以来普遍的不良状态管理架构的征兆。
Bijection(双向注入)
Inversion of Control(控制反转) 或者dependency injection(依赖注入) 的概念出现在
JSF 和EJB3 以及很多所谓的“轻型容器”中。这类容器大多注重于实现stateless services
(无状态服务) 的组件注射。即便在支持对有状态的组件进行注射的情况下(例如JSF) ,
事实上也难以用于处理应用程序状态, 因为有状态组件的范围难以有效而灵活地定义,并且属
于更广范围的组件不能被注入到属于更窄范围的组件中。
Bijection(双向注入)和IoC 的不同之处在于它是动态的、语境相关的以及双向的。你可以
把这一机制理解成将语境相关的变量(与当前线程绑定的各种上下文中的名称)对应到组件的

属性中。双向注入允许由容器对有状态的组件进行自动组装。它甚至允许组件可以安全而简单
地处理上下文变量的值,只需要把它赋给组件的属性。
工作区管理(Workspace Management)和多窗口浏览
Seam 应用程序让用户自由地在多个浏览器窗口中切换,每个窗口都与一个不同的、安全隔离的
对话关联。应用程序甚至可以利用workspace management,允许用户在一个浏览器窗口的多
个对话(工作区)之间进行切换。Seam 不仅提供正确的多窗口操作,还提供在一个窗口中模
拟多个窗口的操作。
更喜欢XML 注解
传统上,关于到底哪些元信息可以算作配置,Java 社区一直处于一种极为混乱的状态。J2EE
和流行的“轻型”容器为真正可以在不同的系统部署之间配置的东西,以及任何不容易用Java
表达的其他声明都提供了基于XML 的部署描述符。Java 5 注解改变了所有这一切。
EJB3.0 接受注解和“对例外配置”,这成了以声明的形式为容器提供信息的最简易方法。不幸
的是,JSF 仍然在十分依赖笨重的XML 配置文件。Seam 扩展了EJB 3.0 提供的注解,以用于
声明式状态管理和声明式上下文划分。这让你摆脱了对繁琐的JSF managed bean(JSF 受管
bean)的配置,减少了所需的XML,只剩下那些真正属于XML 的信息(JSF 导航规则)。
集成测试轻而易举
Seam 组件作为POJO,天生就是可以进行单元测试的。但是对于复杂的应用程序,只有单元测试
则还不够。对于Java Web 应用程序来说,集成测试一般是一项笨拙且困难的任务。因此,Seam
为Seam 应用程序提供了可测试性作为该框架的一项核心功能。你可以轻易地编写重现与用户
完整交互的JUnit 或TestNG 测试,来演习除了视图View(JSP 或者Facelets 页面)之外的所
有系统组件。你可以直接从你的IDE 中运行这些测试,Seam 会在那里自动地利用JBoss
Embeddable 部署EJB 组件。
规范也非尽善尽美
我们认为最新的Java EE 规范很不错。但是我们知道它还远不够完美。在规范中有许多漏洞(例
如,GET 请求的JSF 生命周期中的局限性),Seam 修正了这些漏洞。Seam 的创建者们正与JCP
专家组一道,确保这些修正恢复到标准的下一次修订中。
Web 应用程序不只是服务HTML 页面
当今的Web 框架认为太小了。它们让你叫用户输入表单,并进入到你的Java 对象。然后它们就
让你悬着。真正完整的Web 应用程序框架应该解决像持久化、并发、异步、状态管理、安全、
电子邮件、信息、PDF 和图表生成、工作流、wikitext 渲染、Web Services、缓存等等更多的
问题。一旦你尝到了Seam 的甜头,就会惊讶地发现许多问题都变得更加简单了......
Seam 为持久化集成了JPA 和Hibernate 3,为轻量化的异步性集成了EJB Timer Service 和
Quartz,为工作流集成了jBPM,为业务规则集成了JBoss 规则,为电子邮件集成了Meldware
Mail,为完整的文本搜索集成了Hibernate Search 和Lucene,为消息集成了JMS,以及为页面
片断捕捉集成了JBoss Cache。Seam 在JAAS 和JBoss 规则之上,创建了一个新的基于规则的
安全框架。甚至有用来渲染PDF、在线电子邮件和图表及wikitext 的JSF 标签库。Seam 组件

可以同时作为一个Web Service 进行调用,异步地从客户端JavaScript 或者Google Web
Toolkit,或者当然也可以直接从JSF 调用。
立刻开始吧!
Seam 在任何Java EE 应用程序服务器中都可以运行,甚至在Tomcat 中也可以。如果你的环境
支持EJB 3.0,好极了! 如果不支持,也没关系,你可以使用Seam 为持久化内置的包含JPA
或者Hibernate3 的事务管理。或者,你可以在Tomcat 中部署JBoss Embedded,同时享有对
EJB 3.0 的完整

 

这本书就在我上传的资源中,可以下载查看的,也可以在其它地方下载,应该很多的