SEAM学习笔记(一)-----------上下文相关组件模型

本文是关于SEAM框架的学习笔记,主要探讨了上下文相关的组件模型,包括无状态上下文、事件上下文、页面上下文、对话上下文、会话上下文、业务上下文和应用上下文等,详细阐述了各上下文的特点和应用场景,同时提到了并发模型和状态管理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

突然读到了很老的一句话,不动笔墨不读书。想想读书笔记的习惯一直没有养成,而确实之前学过的技术,做过的工程许久不翻就已经不记得了,毕业设计邱老要用SEAM+RICHFACES,没接触过,边看边学,记点东西以后备忘。

上下文相关的组件模型--Seam上下文(上下文的概念不是很清晰

 

Stateless context

无状态,没太大意思,有不面向对象的争议,重要。

 

Event context

最窄的有状态上下文,web request上下文的泛化(generalize),其中与JSF相关的时间上下文比较重要,时间上下文相关联的组件在请求结束时被销毁,他们的状态至少在请求的生命周期中是存在并且是定义良好的

 

RMI或者Seam Remoting调用Seam组件的时候,一个时间上下文将为这个调用而被创建和销毁。

 

Page context

页面上下文允许将状态与一个渲染页面的实例 相关联,可以在Event Listener中初始化状态,或者在实际渲染页面的时候初始化状态。,任何源于该页面的事件都可以访问这些状态,对支持可点击列表这种功能时特别有用。

 

Conversation context

用户会话,跨越多个Serverlet,多个请求和多个数据库事务。

 

一些业务会话仅存在一次请求中。

跨越多个请求的业务会话必须通过Seam提供的anno注释

一些业务会话同时也是tasks。任务是一种业务会话,它特指一个长时间运行的业务会话,当正确完成后,可能会触发一业务流程状态的转换,Seam为任务划分提供了专门的注解。

 

业务会话是可以嵌套的

 

通常,业务会话是由Seam保存在Servlet Session中,跨越请求 ,Seam实现了可配置的conversation timeout,可以自动销毁不活动的业务会话,这就可以确保,如果用户取消会话,用户的登录Session中保存的状态不会无限增长。

 

长时间运行的业务会话中所产生的并发请求,Seam按顺序执行。

Seam也可以配置成把对话状态保存在客户端浏览器中。

 

Session context

保存与用户登录 session相关的状态,虽然当需要多个业务会话中交换状态的时候很重要,但是一般不建议使用session上下文保存组件,除非是登录用户相关的全局变量。

 

Business context

业务流程上下文保存了长时间运行的业务流程相关的状态

BPM引擎jBPM

生命周期通过外置的process definition language来定义,没有特别的注解来用于划分业务流程

 

Application context

即servlet中servlet上下文,保存的是静态 信息,如配置数据,引用数据或者元模型。

 

Context various上下文变量

 

context搜索优先级

组件实例是由特定的范围内取得的,其他的时候是通过优先级顺序在所有有状态范围内搜寻。 顺序为

  event page conversation session business process application

通过Context.lookupStatefulContexts()来执行带优先的搜索。

 

并发模型

 

Servlet和EJB都没有规范程序的并发请求该怎么处理

Servlet让所有的线程并发运行,把线程资源安全共享的任务交给代码

EJB允许无状态组件并发,当访问有状态session bean时,就会抛出一个异常。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值