详解阿里P7架构师是怎么在Spring中实现事务暂停( 四 )

  • 强制事务恢复—即使在暂停的事务被标识为回滚时也可以恢复 。这需要使用WebLogic的扩展TransactionManager接口来调用forceResume()方法 。

  • 详解阿里P7架构师是怎么在Spring中实现事务暂停

    文章插图
     
    Figure 2. WebLogic Server's transaction monitor (click the image for a full-size screen shot)
    Spring的WebLogicJtaTransactionManager有效地为基于Spring的应用提供了WebLogic Server事务管理的全部功能 。这使得Spring事务分离成为一种能与EJB CMT竟争的产品,而且提供了相同级别的事务支持 。
    Spring and EJB CMT如上所示,Spring的POJO声明性事务分离可以作为一种除传统EJB CMT这外的选择 。但是Spring与EJB并不是完成互斥的,Spring的应用上下文也可以作为EJB façade的后台来管理数据访问(DAO)和其他细纹理的业务对象 。
    在EJB情景中,事务是由EJB CMT来驱动的 。对Spring来说,数据访问支持特性会自动检测到这样的环境并且采用相应的事务 。例如,Spring对Hibernate的支持能够提供隐式的资源管理,即使是EJB驱动的事务,甚至可以在不需要修改任何DAO代码的情况下提供相同的语义 。
    Spring有效的解耦了DAO实现与实际的运行环境 。DAO可以参与Spring的事务就像参与EJB CMT事务一样 。这不仅简化在其他环境中的重用,而且更方便在J2EE容器外进行测试 。
    【详解阿里P7架构师是怎么在Spring中实现事务暂停】 
    结论Spring框架为J2EE和非J2EE环境提供了全量的事务分离的特性,特别表现在POJO的声明性事务上 。他用一种灵活而非侵入式的方式为非EJB环境中的事务分离提供了便利 。与EJB不同,这样的事务性POJO应用对象可以很容易的被测试和在J2EE容器外补重用 。
    Spring提供了各种事务策略,如JtaTransactionManager是用来代理J2EE服务器的事务协调器,而JDBC DataSourceTransactionManager是用来为简单的JDBC DataSource(就是单一目标数据库)执行事务 。Spring可以很容易为不同的环境通过后台配置的简单修改来调整事务策略 。
    超越标准的JTA支持,Spring为WebLogic Server的JTA扩展提供了完善的集成,可以支持高级特性如事务监视和每事务隔离级别 。通过对WebLogic Server的特殊支持,基于Spring的应用可以完全利用WebLogic Server的事务管理功能 。
    Spring事务分离是继EJB CMT之外的另一种可选方式,特别是对那些基于POJO的轻量级架构 。在那只是因为选择LSSB(本地无状态会话BEAN)来应用声明性事务的情况下,基于Spring的POJO服务模型是一种可行的选择,他提供了非常高层的灵活性、可测试性和重用性 。
    Java肖先生:专注于Java开发技术的研究与知识分享!




    推荐阅读