java

位置:IT落伍者 >> java >> 浏览文章

JBossSeam学习系列之二--什么是JBossSeam


发布日期:2018年09月06日
 
JBossSeam学习系列之二--什么是JBossSeam

把环境配好之后Seam的例子也运行起来了看了seam_reference第一章中如下几个例子讲解

the registration example

the messages example

the todo list example

the numberguess example

又在网站上找了seam_reference的中文文档主要看了《the contextual component model》一章看完以后感觉Seam最核心的地方就是其contextual component model了不过看完这一章以后只是对Seam有个大概的了解对其具体的内容细节还缺乏进一步的了解对其优点缺点也缺乏进一步的认识

然后又找到了《Seam in Action》的电子书看了一点之后还是觉得这本电子书写得好内容组织的很好不象seam_reference后面的章节仅仅是罗列seam的各项功能

今天把Seam in Action的第一章草草看了一遍将第一章讲述的内容总结如下

什么是Seam

在Seam in Action中没有将Seam称之为web framework而是将其称为application stackSeam将Java EE中的EJBJSFJPA/HibernateJAAS等技术融合在一起提供了更容易使用的方式比如conversationpage flowsbuisness precessesrulebased securityJavaScript(Ajax) remotingPDF renderingemail组合chartingfile uploadsGroovy integration等用以简化web开发

Seam的目标

简化web开发

Seam如何集成各类技术

Seam集成了JSFJPA和POJO Component

在Seam中将EJB中的Session Bean作为JSF的managed bean直接将表现层和业务层衔接在一起使得Session Bean可以直接访问web相关数据比如requestsessionapplicationJSF的FacesMessageComponent Tree等而在不使用Seam时一般都是使用JSF back bean来作为表现层和业务层之间的中介

使用annotation中的@Name标注替代了JSF的facesconfigxml中关于managed bean的配置

Seam不一定必须使用EJB和JPA也可以使用POJOHibernate作为替代如下图

上下文相关的组件模型(Seam中的核心概念)

Seam提供了种类型的上下文其中属于Seam特有的两种上下文类型分别为Conversation ContextBusiness process Context

Seam提供了统一的组件注册annotation异常配置方法拦截统一的EL表达式等功能其中Seam对其管理的组件拦截过程如下图

Seam的核心竞争力

更好的JSF

增强的JSF

Seam对JSF最被认可的改进就是消除了在配置文件中声明managed bean

Prerender page actions

Managed request parameters (for a given page)

Intelligent stateless and stateful navigation

Transparent JSF data model and data model selection handling

Finegrained exception handling

Pagelevel security (per view ID)

基于Annotation的表单验证

Bookmarkable command links (solving the everything is a POST problem)

Entity converter for pick lists

Conversation controls

Support for preventing lazy initialization exceptions and nontransactional data access in the view

消除了连接Bean(ELIMINATING CONNECTOR BEANS)

用一幅图可以很好的说明这句话的含义

引入了有状态的变量范围(INTRODUCING STATEFUL VARIABLE SCOPES)

扩展的Persistence Context

Spring中提供了The Session In View Filter使得persistence manage可以在一个请求中存在避免了常见的LazyInitializationException在Seam中扩展的Persistence Context可以跨越多个请求其实扩展的Persistence Context是Conversation ContextBusiness Process Context的基础

get rich quick

Seam提供了两种方式将Ajax集成到Seam应用中一种是使用具有Ajax特性的JSF组件如RichFaces和ICEFaces另一种是可以在浏览器中使用JavaScript直接调用服务端的组件

Seam还提供了另外一种意义上的Rich即将PDFmail等功能集成到Seam应用中

提供了一个快速开发环境

代码自动生成

热部署

Seam调试页面

不部署即可以进行单元测试

从目前我个人的理解来看Seam的作用与能力如下

Seam将EJB与JSF整合在一起消除了JSF与业务代码之间的间隙直接将表现层与业务层衔接在一起

Seam提出了Conversation Context的概念将Stateful EJB引入到web开发中直接与Conversation Context对应

Seam提供了与Jbpmitextmail等一系列开源框架的整合对于需要使用的相关功能的用户来说提供了便利性提供了开发工具的整合(Seam Gen与IDE)还可以自动生成部分代码

但由于Seam整合了如此多的框架带来的一个最大的缺点学习曲线陡峭在SSH非常流行的今天需要面对很多新技术(JSFEJBJPA等)对于一个新手来说难度比较大如果想使Seam被更多的开发人员使用必须加强它的文档目前的文档还是太少了

上一篇:MyEclipse 6.0发布 整合JPA框架

下一篇:精通Eclipse V3.4,第2部分: JDT