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

本文深入解析Seam框架,包括其核心概念、目标、如何集成技术、核心竞争力以及作用与能力。Seam将多种技术融合,简化Web开发流程,提供统一的组件注册、annotation、异常配置等功能,特别强调了其对JSF的增强以及在Ajax、PDF、邮件集成等方面的特性。同时,文章指出了Seam学习曲线陡峭的问题,并讨论了其文档建设的重要性。

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

  the registration example

  the messages example

  the todo list example

  the numberguess example

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

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

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

  1、什么是Seam

  在Seam in Action中,没有将Seam称之为web framework,而是将其称为application stack。Seam将Java EE中的EJB3、JSF、JPA/Hibernate、JAAS等技术融合在一起,提供了更容易使用的方式,比如conversation、page flows、buisness precesses、rule-based security、JavaScript(Ajax) remoting、PDF rendering、email组合、charting、file uploads、Groovy integration等,用以简化web开发。

  2、Seam的目标

  简化web开发

  3、Seam如何集成各类技术

Seam集成了JSF、JPA和POJO Component


在Seam中将EJB3.0中的Session Bean作为JSF的managed bean,直接将表现层和业务层衔接在一起,使得Session Bean可以直接访问web相关数据,比如request、session、application、JSF的FacesMessage、Component Tree等。而在不使用Seam时,一般都是使用JSF back bean来作为表现层和业务层之间的中介。


使用annotation中的@Name标注替代了JSF的faces-config.xml中关于managed bean的配置。

Seam不一定必须使用EJB和JPA,也可以使用POJO、Hibernate作为替代。如下图:



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

Seam提供了7种类型的上下文,其中属于Seam特有的两种上下文类型分别为:Conversation Context、Business process Context。

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




4、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

  Fine-grained exception handling

  Page-level 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 Context、Business Process Context的基础。

get rich quick

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

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

提供了一个快速开发环境

代码自动生成

热部署

Seam调试页面

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

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

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

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

  Seam提供了与Jbpm、itext、mail等一系列开源框架的整合,对于需要使用的相关功能的用户来说,提供了便利性

  提供了开发工具的整合(Seam Gen与IDE),还可以自动生成部分代码

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

跟网型逆变器小干扰稳定性分析与控制策略优化研究(Simulink仿真实现)内容概要:本文围绕跟网型逆变器的小干扰稳定性展开分析,重点研究其在电力系统中的动态响应特性及控制策略优化问题。通过构建基于Simulink的仿真模型,对逆变器在不同工况下的小信号稳定性进行建模与分析,识别系统可能存在的振荡风险,并提出相应的控制优化方法以提升系统稳定性和动态性能。研究内容涵盖数学建模、稳定性判据分析、控制器设计与参数优化,并结合仿真验证所提策略的有效性,为新能源并网系统的稳定运行提供理论支持和技术参考。; 适合人群:具备电力电子、自动控制或电力系统相关背景,熟悉Matlab/Simulink仿真工具,从事新能源并网、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 分析跟网型逆变器在弱电网条件下的小干扰稳定性问题;② 设计并优化逆变器外环与内环控制器以提升系统阻尼特性;③ 利用Simulink搭建仿真模型验证理论分析与控制策略的有效性;④ 支持科研论文撰写、课题研究或工程项目中的稳定性评估与改进。; 阅读建议:建议读者结合文中提供的Simulink仿真模型,深入理解状态空间建模、特征值分析及控制器设计过程,重点关注控制参数变化对系统极点分布的影响,并通过动手仿真加深对小干扰稳定性机理的认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值