Seam 1.1 最终发布GA

发布者:    |       Seam

今天早上我上传了Seam 1.1的GA版本。对于那些一直关注Seam 1.1开发的人来说,与之前的两个CR版本相比,这里的新内容并不多。与CR2相比,唯一的显著改进是我们现在可以在WebLogic(以及JBoss、GlassFish和Tomcat)上直接运行Hibernate和JPA示例应用程序,对seam-gen进行了一些改进,并内置了一个优秀的日期选择器控件。

下载地址:这里 .

但对于那些一直忽视Seam的人来说,这里快速概述一下1.1中的新功能。(如果您从未听说过Seam,并且想知道为什么您应该关心,请先点击这里 。)

AJAX

Seam已经具备(类似DWR的)AJAX组件远程功能一段时间了,这个功能非常受欢迎且实用。但现实中,大多数Java开发者更希望能够在不触碰JavaScript的情况下实现功能,如部分页面刷新、交互式服务器端验证、服务器端建议等。这就是ICEfaces和Ajax4JSF的作用所在。这些是JSF的领先AJAX组件库,也是构建丰富客户端的最简单、声明式JSF模板的途径。我们已经与ICEfaces和Ajax4JSF团队合作,确保这两个库都与Seam兼容。

更重要的是,我们为Seam创建了一个全新的并发管理架构。AJAX从根本上改变了网络的交互模式。如果你试图将传统的无状态架构(专为少量、同步、粗粒度请求而设计)用于AJAX环境(在那里许多、异步(因此并发)的细粒度请求是日常事务),你几乎肯定会杀死你的数据库!AJAX使得服务器端(会话)状态管理成为必需品,而不是锦上添花的事情。令人惊讶的是,Seam是目前唯一提供强大会话状态的架构。但并发访问服务器端会话状态的可能性引发了一系列线程安全问题,这些问题在servlet规范中并未得到解决。Seam 1.1以稳健的方式解决了这些问题。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/concepts.html#d0e2420

面向数据的应用程序

必须明确指出,Seam首先不是一个Rails/Grails/Trails风格的框架,用于简化基本面向数据应用的开发。Seam当然极大地简化了典型J2EE或Spring+Hibernate应用架构的编程模型,但你真正理解Seam的意义,直到你开始了解有状态组件模型、会话、会话作用域持久化上下文、页面流和业务流程管理。然而,没有任何理由表明,这种复杂功能的存在不能与简化基本数据访问的设施舒适共存。因此,Seam 1.1引入了应用程序框架和命令行工具。这些工具出奇地简单,因为它们建立在Seam现有的编程模型之上,并且能够利用Seam的全部功能和简单性。

Seam应用程序框架最终会比现在大得多,可能最终会与Seam核心分开打包。目前它为JPA和Hibernate3提供了查询和首页对象。这些是你可以通过扩展或配置来重用的类。如果你愿意,可以将它们视为在更传统的Java Web应用架构中扮演类似DAO的角色。最大的区别在于,在Seam中,将查询和首页对象直接绑定到视图(通过EL实现松耦合)是完全合理的,而更传统的架构则迫使你通过某种Action类访问DAO。当然,如果你喜欢,也可以将查询或首页注入到任何Seam组件中,并通过编程方式调用它。像往常一样,Seam让你分层你的代码,但不会强迫你采用任何特定的分层。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/framework.html

命令行工具使得使用Seam变得非常容易。几个按键,你将有一个完整的Eclipse项目结构(也支持NetBeans),当你编辑代码时,它会自动重新部署到JBoss展开目录。再按几个键,我们就有了带有简单操作的页面。再按几个键,我们就从数据库逆向工程了一个完整的Seam应用程序(基于应用程序框架)。逆向工程工具当然是基于Hibernate Tools构建的。我们打算将命令行工具的功能集成到未来版本的JBoss IDE中。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/gettingstarted.html

这项工作还包括改进Seam对JSF的扩展,允许轻松创建具有书签页面的应用程序。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/events.html#d0e3357

J2EE支持

以前,Seam可以部署在JBoss或GlassFish等Java EE 5环境中,或者通过JBoss Microcontainer或JBoss Embeddable EJB3在独立的Tomcat上运行。我们听到了许多潜在用户的强烈抱怨,他们想使用Seam,但被困在WebLogic或WebSphere等J2EE应用服务器上。Seam 1.1与J2EE兼容(你可以使用JPA或Hibernate进行持久化),并附带了一些示例,这些示例可以在WebLogic上直接部署(下一个版本我们将支持WebSphere)。

这次变更意味着我们需要加强Seam对普通JavaBean组件的支持,因为在J2EE环境中,人们无法使用有状态会话Bean。Seam 1.1中的许多不太引人注目的工作涉及构建有状态JavaBean组件的高效集群架构。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/concepts.html#d0e2831

持久性上下文管理

Seam管理的持久性上下文是Seam中最酷的功能之一。事实上,我们最初决定创建Seam的主要原因之一是对于Hibernate用户在使用Hibernate与无状态会话Bean或Spring时遇到的LazyInitializationExceptions问题感到沮丧。本版本中,Seam的持久性上下文管理得到了两项重大增强。首先,有一系列极其复杂的代码(对用户完全不可见),允许扩展持久性上下文进行极高效的集群化——甚至比EJB容器在容器管理持久性上下文时允许的还要高效。其次,我们引入了对原子持久性上下文的支持。原子持久性上下文允许你在同一会话中的多个请求中更改管理对象,但这些更改仅在会话结束(或某些其他明确定义的点)时才持久化,而不是在每个请求结束时。这是JBoss、Sun和Sybase试图将其标准化为EJB3规范但未成功实现的功能。如果您想使用此功能,则需要使用Hibernate作为JPA提供程序。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/conversations.html#d0e4275

异步性

Seam 1.1在EJB3定时服务之上提供了异步方法调用的支持。这是一种在JMS过于繁琐(别担心,Seam也使发送和接收JMS消息变得简单,但这不是新功能)的情况下实现异步性的轻量级方式。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/jms.html#d0e5041

JSF标签库

Seam 1.1为Seam的JSF标签库增加了一些新功能,其中最值得注意的是用于页面片段缓存的控件(类似于不与JSF兼容的OSCache),用于在验证失败时添加花哨的装饰的控件,以及一个不错的日期选择器。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/controls.html http://docs.jboss.com/seam/1.1GA/reference/zh/html/validation.html

基于XML的复杂组件配置

我们增强了Seam的XML配置功能,允许更灵活地打包XML,并使用命名空间模式以及其他改进。

http://docs.jboss.com/seam/1.1GA/reference/zh/html/xml.html


回到顶部