`

EJB 的事务与timer

ejb 
阅读更多
1)设定时间间隔后能重复定时的Timer
  
  在EJB 2.1规范中定义的Timer有两种,一种是single-event timers,另一种是interval timers。single-event timers在它的生命周期中只产生一次timeout,而interval timers可以在每经过一段时间间隔后产生一次timeout。
  
  2)Timer的持久性
  
  如果服务器被关机,那么这些timer仍然起作用,等到下次服务器启动时能够继续计时。假如启动时已经超时,那么立即产生timeout。
  
  3)事务特性
  
  Timer的创建(create)、取消(cancel),以及EJB的ejbTimeout方法都可以参与事务,作为事务的一部分,他们可以在事务回滚(Rollback)时恢复状态。
  
  也就是说,如果在事务中调用TimerService的createTimer方法,那么回滚时将销毁创建的Timer;如果在事务中调用了Timer的cancel方法,那么回滚时将恢复这个Timer。
  
   如果因为ejbTimeout方法运行失败导致事务回滚,那么规范要求服务器的Timer Service在之后要至少再次调用ejbTimeout方法一次。之所以要求这样做的原因呢,我想可能是因为那些需要定时完成的业务都是相对比较重要 的,如果Rollback后不加以处理可能会产生严重后果


timer结合CMT与BMT
如果需要回滚timer的状态,
CMT:
public void rollBackTimerMethod(EJBContext context){
    TimerService ts = context.getTimerService();
     Timer t = ts.createTimer(1000, "timer1");
     context.setRollbackOnly();
}
这样,创建的timer会销毁


BMT:
public void rollBackTimerMethod(EJBContext context){
    context.getUserTransaction().begin();
    TimerService ts = context.getTimerService();
     Timer t = ts.createTimer(1000, "timer1");
     context.getUserTransaction().rollback();
}
这样,创建的timer会销毁
分享到:
评论

相关推荐

    EJB与事务 -详细描述EJB和事务

    Bean管理的事务需要开发者自己编写代码来控制事务的开始和提交,而容器管理的事务则由EJB容器自动处理,开发者只需要在ejb-jar.xml中声明事务属性,容器会根据这些属性自动进行事务管理,简化了编程工作。...

    MyEclipse进行Ejb快速开发配置

    除了基础的EJB开发,MyEclipse还支持EJB的高级特性,如EJB定时器(Timer Service)、EJB的并发控制(Concurrent annotations)、依赖注入(Dependency Injection)等。这些功能可以通过配置EJB元数据或使用Java EE的...

    EJB学习源代码

    5. **TimerService**:EJB的TimerService接口允许在应用程序中创建定时任务,执行计划的任务或触发事件。这个部分的源码可能会展示如何配置和使用定时器服务来执行周期性任务。 6. **CompositePK**:在数据库设计中...

    EJB3.0.rar_EJB3.0_ejb_ejb 3.0

    在EJB 3.0中,定时服务(Timer Service)是一个核心特性,它允许开发者创建计划任务和周期性操作,以实现自动化工作流和后台处理。以下是对EJB 3.0定时服务的详细介绍: 1. **定时服务简介** EJB 3.0中的定时服务...

    EJB入门及高级特性

    Java EE提供定时服务(Timer Service),允许EJB在预设的时间执行任务。开发者可以创建定时器,设置触发时间或周期,实现后台任务自动化。 **5. 安全** EJB具有内置的安全机制,支持角色基访问控制(RBAC)。...

    EJB3.1深入浅出

    #### 一、EJB 3.1 的背景与改进 **EJB(Enterprise Java Beans)**是Java Enterprise Edition(Java EE)平台上的服务端组件架构模型,它旨在快速并简化分布式、事务处理、安全性以及可移植的应用程序开发。自其2.*...

    Java EJB方面的实例集.rar

    实例集中可能还会包含一些高级主题,比如如何使用EJB定时器服务(Timer Service)来执行周期性或延迟的任务,以及如何利用消息驱动bean处理JMS消息。这些实例不仅加深学习者对EJB操作技巧的理解,也为他们日后在复杂...

    《EJB3.0入门经典教程精简版》源码

    9. **定时器服务(Timer Service)**:EJB3.0提供定时任务功能,通过`@Schedule`注解可以在特定时间执行方法。 在学习这个源码教程时,你可以通过阅读和运行代码,了解每个EJB3.0核心组件的使用方法,逐步掌握如何...

    EJB3.0中文文档

    #### 第一章:EJB知识与运行环境配置 **1.1 什么是ENTERPRISE JAVA BEANS (EJB)** EJB(Enterprise JavaBeans)是一种Java标准,用于构建分布式、健壮的企业级应用程序。它允许开发者通过将业务逻辑封装到可重用...

    EJB3.0知识点归纳

    这意呈着当客户端与服务器进行交互时,服务器能够记住之前的状态。 - **应用场景**: 如果应用程序需要跟踪某个客户端的多个交互之间的状态变化,那么 Stateful Session Bean 将是合适的选择。 - **注意事项**: ...

    EJB3笔记代码

    本笔记代码主要涵盖了EJB3的一些核心特性,包括定时任务(timer)、会话bean(session)、实体bean(entity)、拦截器(interceptor)、领域模型(domain)、客户端(client)、事务管理(transaction)、消息传递...

    EJB3开发指南《EJB.3.Developer.Guide》

    - **配置与使用**:通过注解如`@Stateless`和`@Stateful`来声明Bean类型,并利用EJB容器提供的服务进行事务管理和生命周期管理。 #### 三、实体Entities - **定义**:实体Bean是EJB中的另一种组件类型,主要用于...

    JBoss EJB3.0实例教程

    总之,《JBoss EJB3.0实例教程》是JavaEE开发者必备的参考书籍之一,它将理论与实践相结合,通过实例讲解EJB3.0的关键技术和最佳实践,对于提升JavaEE开发能力大有裨益。配合书中的PDF文档,学习者可以按照步骤操作...

    EJB3.0入门经典教程

    10. **EJB Timer服务**:EJB3.0提供定时任务功能,允许Bean在预定的时间执行特定任务,通过`@Schedule`注解实现。 通过这个入门经典教程,学习者将能够理解EJB3.0的核心概念,如何创建和部署EJB,以及如何利用EJB的...

    EJB3-SourceCode

    EJB(Enterprise JavaBeans)是Java平台上的企业级组件模型,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重要版本,引入了许多改进,使得开发过程更为简化,降低了对Java EE程序员的...

    EJB3.0实例教程 源代码

    EJB3.0是Java EE(企业版Java)平台中的一项关键组件,它简化了开发企业级应用的过程,提供了强大的组件模型,用于构建可扩展、安全和事务性的后端服务。 ### 1. EJB3.0核心概念 EJB3.0引入了许多改进,包括注解...

Global site tag (gtag.js) - Google Analytics