分析Seam的事务管理之前有必要先写点SSH中的事务管理,Spring靠什么起家?靠IOC和AOP,通过这个IOC,Spring整合了大堆大堆的框架,于是成为了一个平台,让SSH程序员到处都是,但是我用Spring始终觉得有疙瘩,即便Spring是一个音乐家写的,Spring的源码很漂亮,测试代码很漂亮,用它也做了N多项目。
Spring,无状态全栈式JavaEE编程平台,事务用它的PlatformTransactionManager抽象把边界定在了一个方法的执行前和执行后,这在表达业务的原子上非常直观,比如我们把事务界定到应用层,然后领域层和数据访问层都不需要管理事务,可是当这个事务方法执行完之后spring就不管了,这就是问题所在,一个数据库交互的web应用如果有用户等待,网络异常,ORM几个因子在里面,就比较复杂,这也是OSIV的问题,见我的博文再说OSIV。
Seam意识到事务不仅仅在业务层,而且整个请求都应该有,这也许就是Gavin King的世界观,把ORM的关注点向表现层拉通,一条龙,而不是像Spring那样用一个无状态IOC今天集成这个,明天集成那个,Seam的事务具备真正意义上的全局性,借助JSF的生命周期,Seam对请求的没个阶段做了细粒度的控制,持久化上下文,事务范围,异常捕获,回滚操作,一切尽在掌握,Seam为了保护持久化操作,为每个请求打开了两个事务,如果触发页面动作,就是三个,第一个事务在恢复视图之前或者应用请求值之前启动,然后延伸到Invoke Application完成,另一个事务在渲染阶段打开,这样延迟加载及其他按需抓取保持隔离,以避免事务隔离级别的实效。
事务是反伸缩性的,但是在开发企业程序的时候,这是必须得谨慎注意的一块,程序如果严重依赖数据库将遇到伸缩性瓶颈,Seam通过对话模型,将数据和一致性控制拉到了内存中,这有效的避开了数据库的瓶颈,互联网开发似乎对事务的要求是不高的,比如易趣不会使用分布式事务这种技术。
通过查看Seam的日志,我发现即便一个JS的请求,Seam也会同样有多个事务的打开和关闭,这和我们OSIV配置,不小心导致请求一个js都打开Session和关闭Session何其相似?这个目前没想明白,等想明白了再来修改这篇文章。
- 大小: 52.4 KB
分享到:
相关推荐
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
10. **Seam安全性和事务管理**:Seam提供了内置的安全框架和事务管理机制,学习如何配置和使用这些特性对于构建安全、可靠的业务应用非常重要。 总之,在开始Seam之旅之前,开发者应具备扎实的Java EE基础,了解...
2. **JPA集成**: Seam支持JPA,方便地处理数据库操作,包括实体管理和事务控制。 3. **EJB 3集成**: Seam与EJB 3的集成,使得企业级服务的开发变得简单,如会话bean、实体bean等。 4. **WS和JMS集成**: Seam还提供...
5. **持久化支持**:讨论Seam对JPA和Hibernate的支持,包括实体管理和事务管理。 6. **安全管理**:学习Seam的认证和授权机制,如使用Security子模块。 7. **事件和回调**:了解Seam事件系统的工作方式,以及如何...
3. **事务管理**:Seam自动管理Hibernate的事务,使得开发者无需编写繁琐的事务控制代码。在JSF动作事件触发时,Seam可以自动开启、提交或回滚事务。 4. **安全性和身份验证**:Seam提供了内置的安全框架,可以轻松...
还有可能包含`seam-core.jar`,这是Seam框架的基础模块,提供了核心功能,如事件处理、安全性、会话管理和事务管理。此外,`seam-persistence.jar`可能包含Seam对JPA(Java Persistence API)的支持,用于数据库持久...
Seam 2.0与JPA的集成使得数据库操作变得更加简单,支持实体管理和事务控制。 三、Seam 2.0的开发工具和资源 在`jbosseam2.0文档.CHM`中,开发者可以找到详细的API参考、教程、最佳实践以及常见问题解答。这份文档...
Entity Bean对应数据库表,负责数据持久化,而Session Bean则处理业务逻辑、事务管理、页面交互及页面流程控制。这种设计大大减少了配置文件的数量,简化了项目的架构,使开发者能够专注于业务逻辑的实现,而不是...
其中,AOP使得开发者可以方便地定义横切关注点,如日志、事务管理等,提高代码的可维护性。 《Seam in Action》这本书详细介绍了如何使用Seam进行实际项目开发,包括设置环境、创建Seam应用、使用Seam组件、调试和...
4. **安全和事务管理**:学习Seam的安全框架和事务管理机制,确保应用的安全性和数据一致性。 5. **富客户端集成**:了解如何将Seam与RichFaces等富客户端框架结合,创建交互性强的Web应用。 6. **开发流程和实践**...
它不仅与Java Persistence API(JPA)紧密配合,实现了数据持久化,还通过Seam Transactions管理事务,确保了业务操作的完整性和一致性。此外,Seam还支持Spring、Hibernate等流行框架,使得开发者可以充分利用现有...
Seam 是一个强大的 Java EE 框架,它整合了 JSF、EJB 3、CDI 等技术,提供了丰富的功能,如事务管理、安全控制、状态管理等。 Seam-gen 提供了两种使用方式:命令行脚本和 IDE 插件。命令行版本基于 Ant,生成的...
- 包括 EJB 的事务管理、安全性等设置。 - **1.2.1.8 EJB 持久化部署描述符:persistence.xml** - 此文件定义了持久化单元和数据源配置。 - 包括数据源名称、JPA 提供者等信息。 - **1.2.1.9 视图:register....
此外,Seam还整合了`EJB`,使得开发者可以轻松地利用EJB的强大功能,如事务管理、安全性和可扩展性。 `Ajax`支持使得Seam应用能够实现部分页面更新,提供更流畅的用户体验。Seam与`RichFaces`的集成则进一步增强了...
《JBoss Seam》是另一本关于Seam的著作,它不仅介绍了Seam的基本功能,还提供了高级特性的深入讨论,包括事务管理、安全性、AOP(面向切面编程)和实时通信等。这本书有助于开发者更全面地理解和掌握Seam框架,提升...
- **EJB部署描述符**:`ejb-jar.xml`配置了EJB模块的信息,如事务管理、安全性等。 - **持久化部署描述符**:`persistence.xml`定义了持久层的配置,如数据源、实体映射等。 - **视图**:`register.jsp` 和 `...
**EJB(Enterprise JavaBeans)**:EJB是Java平台上的企业级组件模型,用于构建可部署在Java EE服务器上的分布式、事务处理、安全和可管理的企业级应用。EJB组件主要包括三种类型:Session Beans(用于处理业务逻辑...
Seam是一个Java EE框架,它将企业...在实践中,不断探索Seam的高级特性,如CDI(Contexts and Dependency Injection)、EJB(Enterprise JavaBeans)集成、以及安全和事务管理,将有助于进一步提升开发效率和应用质量。
在Seam工程中,EJB常被用作业务逻辑层,处理数据库操作、事务管理等。EJB有三种主要类型:Stateless Session Beans(无状态会话豆)、Stateful Session Beans(有状态会话豆)和Message-driven Beans(消息驱动豆)...