基本的Seam上下文包括:
• Stateless context 无状态上下文
• Event (or request) context 事件(或请求)上下文
• Page context 页面上下文
• Conversation context 对话上下文
• Session context 会话上下文
• Business process context 业务流程上下文
• Application context 应用上下文
你可能很快就能认出一些Servlet和相关规范中的上下文。但是有两个上下文你可能头一次遇到:对话上下文和业务流程上下文。Web应用的状态管理非常脆弱和容易出错的一个原因就是Web内置的上下文(请求,会话和应用)从业务流程的角度上来看并没有特别的意义。
例如,一个用户登录的会话,按照实际的应用工作流来说,是一个相当武断的构造。因此,大部分Seam组件都被指定在对话或者业务流程的上下文范围内,因为这些上下文更加具有应用意义。
让我们来依次看看每个上下文。
Stateless context 无状态上下文
完全没有状态的组件(主要是无状态会话Bean)总是存在于无状态上下文中(这是完全没有上下文)。无状态组件并不有趣,并且和面向对象的思想相违背。但是,它们非常重要并且非常有用。
Event context 事件上下文
事件上下文是“最窄”的有状态的上下文,是负责其他类型事件的Web请求上下文的泛化。不过,和一个JSF请求的生命周期相关联的事件上下文是事件上下文 的重要例子。这个事件上下文你会经常用到。和事件上下文相关联的组件在请求结束后被销毁,但是至少在请求的生命周期中组件的状态是可以获得的,并且经过了 良好的定义。
当你通过RMI或者Seam Remoting调用Seam组件时,事件上下文只是为这个调用而被创建和销毁。
Page context 页面上下文
页面上下文能够让你将状态和一个已被绘制的页面中特定的实例相关联。你可以在事件监听器中初始化状态,或者实际绘制这个页面的时候初始化这个状态。这对于 由在服务器端变化的数据构成的可点击列表这样的功能非常有用。这个状态实际上被序列化发送给客户端,所以这样的构建非常强壮,可以解决多窗口操作和支持回 退按钮。
Conversation context 对话上下文
对话上下文是Seam中真正的核心概念。从用户角度出发,一个对话是一个工作单元。它可能跨越多个用户交互,多个请求,多个数据库的事务处理。但是对于用户来说,一个对话只解决一个单一的问题。
例如,“旅馆预定”,“合同批准”,“创建订单”都是对话。你肯能认为对话实现了单一的”用例“或者”用户故事“,但是这个关系并不非常确切。
一个对话持有关注”在这个窗口中,用户正在干什麽“的状态。一个单一用户可能在任何时间点上使用多个窗口进行多个对话。对话上下文能够让我们确保不同的对话之间不会相互冲突,产生Bug.
也许你会费些时间来熟悉面向对话的应用。但是一旦一明白并熟悉了这个概念,我想你会喜欢它的,并且,你将不必考虑对话这个事情了。
一些对话仅仅为了一个单一的请求而存在。跨越多个请求的对话必须通过Seam提供的注释来划分。
一些对话其实也是任务。任务是一种长时间运行的业务流程的对话,当业务流程成功的完成后,任务能够触发业务流程状态的改变。Seam提供了任务划分的特定一组注释。
对话能够套嵌对话,一个对话可能被一个更”宽“的对话包含。这是一个高级的特性。
通常,对话的状态在请求之间Servlet会话中由Seam实际持有。Seam实现了一个可配置的对话超时,能够自动的销毁失活的对话,从而保证了一个单一用户登录会话的状态不会由于用户放弃对话而无限制的增长。
Seam将位于同一个流程中,同一个长时间运行的对话上下文中的并发请求序列化。
另外,Seam也可以配置为在客户端浏览器中保留对话状态。
Session context 会话上下文
会话上下文持有用户登录会话的状态。虽然有些时候我们需要在不同的对话中共享状态,但通常我们不会同意使用会话上下文来持有组件而不是登录用户的全局信息。
在JSR-168 portal环境中,会话上下文代表portlet会话。
Business process context 业务流程上下文
业务流程上下文持有与长时间运行的业务流程相关的状态。这个状态由BPM引擎(JBoss jBPM)来管理和持久化。业务流程跨越多个用户的多个交互,所以这个状态以一种很好的方式在多用户间共享。当前任务决定当前业务流程实例,业务流程的生 命周期通过外部的业务定义语言来定义,所以无需为业务流程的划分指定特别的注释。
Application context 应用上下文
应用上下文和Servlet规范中的Servlet上下文非常相像。应用上下文主要持有一些静态信息,例如配置数据,引用数据或者元模型。例如,Seam将自己的配置信息和元模型存储在应用上下文中。
分享到:
相关推荐
3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何与Enterprise JavaBeans和Contexts and Dependency Injection (CDI)框架协作。 5. **持久化...
Seam是一个Java EE框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Inversion of Control(IoC)和Enterprise JavaBeans(EJB)...理解并熟练运用这些注解和标签,对于高效地使用Seam框架至关重要。
Seam与EJB3.0的轻量级版本集成良好,理解EJB的角色和使用场景对Seam的使用有帮助。 5. **Seam框架结构**:Seam框架包含了多个模块,如Seam Core、Seam Faces、Seam Security等,了解这些模块的功能和它们之间的关系...
总的来说,《Seam in Action》这本书不仅详细介绍了Seam框架的各个方面,而且提供了大量的实例和实践指导,对于希望提升Java EE开发技能的开发者来说,是一本不可或缺的参考书籍。配合提供的"seam+in+action.pdf"和...
例如,我们可以使用`seam-gen`插件来快速创建Seam组件和JPA实体: ```xml <groupId>org.jboss.seam <artifactId>jboss-seam-maven-plugin <version>3.x.y <!-- 这里添加你的执行配置 --> ``` 在...
**JBoss Seam组件中文手册** **一、Seam框架概述** Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。...通过深入理解和熟练使用Seam,开发者能够构建出高效、灵活的企业级应用。
在Seam框架提供的示例中,包含了多个具体应用场景下的实践案例,这些例子不仅帮助开发者快速上手Seam,还能深入理解框架的设计思想和技术细节。 ##### 1. 注册示例 (Registration Example) - **理解代码**:此示例...
书中的示例和实践指导有助于读者理解Seam的每个特性和用法,使开发者能够快速上手并发挥Seam的全部潜力。对于那些希望简化Java EE开发、提高开发效率的团队来说,《Seam in Action》是一本不可或缺的参考书籍。 ...
使用这些资源,开发者可以快速上手Seam框架,理解其工作原理,并通过示例项目实践应用开发。同时,查阅文档可以帮助解决在开发过程中遇到的问题。总之,这个压缩包是一个宝贵的资源集合,对于想要深入了解和使用Seam...
在过去的两周里,我深入学习了SeamTest,这是一个用于Java EE应用测试的强大...在实际使用过程中,遇到的问题和错误是学习过程的一部分,通过解决这些问题,我们可以更深入地理解SeamTest和Seam框架的内部工作原理。
根据提供的信息,我们可以推断出这是一本关于 Seam 框架的专业书籍,书名为《Seam in Action》,作者为 Dan Allen 和 Manning 出版...此外,本书还提供了大量实用案例和最佳实践,帮助读者更好地理解和应用 Seam 框架。
Seam和Hibernate是两个在Java开发中非常...通过实践,你可以深入掌握Seam的事件驱动模型和组件管理,以及Hibernate的ORM机制。记住,实践是检验知识的最好方式,动手尝试并不断调试,才能更好地理解和掌握这些技术。
5. **使用Seam和jBPM的完整范例:DVD商店**:通过一个具体的商业场景,展示了如何利用Seam和jBPM构建复杂的业务流程。 6. **使用Seam工作空间管理的完整范例:IssueTracker**:介绍了一个问题追踪系统的实现过程,...
通过理解认证和授权的概念,设计合适的数据库模型,利用Seam的Security API,以及遵循最佳实践,我们可以构建出一个既安全又易于维护的权限管理系统。这个系统不仅能够保护我们的应用程序,还能随着业务的发展和需求...
6. **开发流程和实践**:通过实例学习Seam的开发过程,包括项目构建、调试、测试等环节。 7. **API和配置**:通过官方参考文档,深入研究Seam的配置选项和API使用,解决实际开发中的问题。 这些书籍将帮助你成为一...
【JBoss Seam 2.0文档详解】 JBoss Seam 是一个开源的企业级开发框架,它旨在简化Java EE应用的开发过程,特别是在Web...提供的文档和资源帮助开发者更好地理解和利用Seam的功能,从而构建高效、可维护的企业级应用。
MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam ...通过实践,你将能够掌握如何运用seam carving来改进图像的缩放效果,使图像在调整大小后仍保持高质量和视觉一致性。
书中还详细介绍了Seam的组件模型、依赖注入、转换和验证机制等核心概念,帮助开发者深入理解框架的内部工作原理。 #### 社区与支持 本书还提到了JBoss Seam框架背后活跃的社区和强大的技术支持。Seam社区不仅提供...
### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而...以上是对 JBoss Seam 2.01GA REF DOC 的详细解读,希望对您理解和掌握 JBoss Seam 有所帮助。