ejb3提供了,定时执行某项任务的功能
实现步骤:
1 . 创建一个sessionbean 和对应的接口 这个没什么特殊,跟以往一样
2. 获取一个sessionContext对象
3 . 在sessionContext中get到TimerService
4. 在TimeService中获取到Timer对象,创建该对象时候第一个参数代表定时任务开始执行的时间(精确到毫秒),第二个参数代表建个多久,第三个为传入的参数(这个参数在执行任务的时候可以取到)
5.写一个方法,名称规则为public xxx(Timer timer)
6. 用annotation Timeout修饰这个方法
代码实现
package com.foshanshop.ejb3.timer;
publicinterface TimerService
{
publicvoid scheduleTimer(long milliseconds);
}
package com.foshanshop.ejb3.timer;
import java.util.Date;
import javax.annotation.Resource;
import javax.ejb.Remote;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
@Stateless
@Remote({TimerService.class})
publicclass TimerServiceBean implements TimerService
{
intcount = 0;
public@Resource SessionContext sctx;
publicvoid scheduleTimer(long milliseconds)
{
sctx.getTimerService().createTimer(new Date(new Date().getTime()+milliseconds),milliseconds,"我的第一个定时器");
System.out.println("begin");
}
@Timeout
publicvoid timeoutHandler(Timer time)
{
System.out.println("定时器发生"+time.getInfo());
count++;
if(count>5)
time.cancel();
}
public SessionContext getSctx()
{
returnsctx;
}
publicvoid setSctx(SessionContext sctx)
{
this.sctx = sctx;
}
}
执行结果
11:03:15,750 INFO [STDOUT] begin
11:03:16,750 INFO [STDOUT] 定时器发生我的第一个定时器
11:03:17,765 INFO [STDOUT] 定时器发生我的第一个定时器
11:03:18,750 INFO [STDOUT] 定时器发生我的第一个定时器
11:03:19,750 INFO [STDOUT] 定时器发生我的第一个定时器
11:03:20,750 INFO [STDOUT] 定时器发生我的第一个定时器
11:03:21,750 INFO [STDOUT] 定时器发生我的第一个定时器
分享到:
相关推荐
**EJB3.0实例教程及源代码** 本教程专注于企业级JavaBeans(EJB)3.0技术的实践应用,由黎活明提供。EJB是Java平台上的一个核心组件,用于构建可扩展的、可靠的、安全的分布式应用程序。EJB 3.0是EJB规范的一个重要...
9. **定时器服务(Timer Service)**:EJB3.0提供定时任务功能,通过`@Schedule`注解可以在特定时间执行方法。 在学习这个源码教程时,你可以通过阅读和运行代码,了解每个EJB3.0核心组件的使用方法,逐步掌握如何...
6. **定时器服务**:EJB3.0提供了一个定时器服务,允许Bean执行定时任务,例如`@Schedule`注解可以用来定义定时任务。 7. **查询语言JPA的JPQL**:JPA(Java Persistence Query Language)是EJB3.0中用于查询数据库...
3. **TimerService** - ejb3.0引入了定时服务(Timer Service),允许bean设置定时任务。`TimerService`接口提供了创建、管理和查询定时器的方法,使得bean可以在特定时间执行预定的任务,例如执行后台处理或发送...
`TimerService`是EJB3.0的一个重要特性,它允许定时任务的调度。在这个例子中,你会看到如何创建定时器,以及如何设置触发器和执行回调方法。 #### 2.3 `CompositePK` `CompositePK`示例展示了如何处理具有复合主键...
- **定时任务**:利用`@Schedule`注解创建定时任务,自动执行周期性工作。 5. **EJB 3.0的挑战与解决方案**: - **性能优化**:虽然EJB简化了开发,但可能带来额外的性能开销,需要合理设计bean的粒度和缓存策略...
10. **EJB Timer服务**:EJB3.0提供定时任务功能,允许Bean在预定的时间执行特定任务,通过`@Schedule`注解实现。 通过这个入门经典教程,学习者将能够理解EJB3.0的核心概念,如何创建和部署EJB,以及如何利用EJB的...
EJB3.0提供了一系列预定义的服务,如安全性(@RolesAllowed)、定时服务(@Schedule)、邮件服务(@MessageDriven)等,方便开发者快速接入。 8. **轻量级容器支持** EJB3.0不仅适用于传统的Java EE服务器,还...
EJB3.0引入了`TimerService`,使得开发者可以方便地创建定时任务。`TimerService`允许你设定定时器,触发方法执行,从而实现周期性或延迟的业务逻辑。 4. **会话bean生命周期(SessionBeanLifeCycle)** 会话bean...
EJB (Enterprise JavaBeans) 是 Java 平台中用于构建企业级分布式应用程序的组件模型。...这有助于理解EJB 3.0的简化编程模型,以及如何利用定时服务实现定时任务,这对于构建可扩展的、健壮的企业级应用非常重要。
EJB 3.0容器提供了一系列服务,包括生命周期管理、资源注入、并发控制、定时服务、JMS消息驱动Bean等。这些服务帮助开发者专注于业务逻辑,而不必担心底层实现。 总的来说,EJB 3.0规范极大地简化了Java企业级应用...
例如,`@Schedule`注解可以用于定时任务的调度。 ### 9. 组件间通信 EJB3.0提供了一种安全、高效的方式来实现组件间的通信。`@EJB`注解可以用于注入其他EJB,而`@Remote`和`@Local`接口则定义了客户端调用Bean的...
**EJB 3.0 实战教程代码解析** ...通过以上实例,开发者可以全面了解EJB 3.0的各个方面,包括数据库交互、定时任务、生命周期管理、对象持久化、Web服务集成以及依赖注入等,从而更好地掌握企业级Java应用的开发。
9. **容器服务**:EJB 3.0提供诸如自动持久化、并发控制、定时任务等服务,开发者无需关心底层实现。 在压缩包中的文件“1214883543638-integrated.jnlp”可能是Java Web Start应用程序的启动链接,而“oc4jeeee....
3. **定时服务** - `TimerService`是EJB3.0的一项功能,允许在应用程序中设置定时任务。通过使用`@Schedule`注解,可以在实体bean或无状态会话bean中创建定时器,执行预定的任务。 4. **会话bean生命周期** - `...
EJB 3.0版本引入了许多改进,使得开发更加简化,其中就包括定时任务功能。本篇文章将深入探讨EJB 3中的定时器服务,帮助开发者了解如何在Java EE应用中实现定时任务。 1. **EJB 3.0概述** EJB 3.0是Java EE 5的一...
5. **TimerService**:EJB的TimerService接口允许在应用程序中创建定时任务,执行计划的任务或触发事件。这个部分的源码可能会展示如何配置和使用定时器服务来执行周期性任务。 6. **CompositePK**:在数据库设计中...
1. 定时任务(timer):EJB3引入了定时任务服务,允许开发者定义周期性的任务,比如执行报表生成或数据清理。通过@Schedule注解,可以在指定的时间点或周期性地触发一个方法执行。 2. 会话bean(session):会话...
第10章和第11章,我们将探讨EJB中的安全机制,确保只有授权的用户和系统能访问和操作资源,以及定时服务,允许设置周期性的任务执行,例如计划备份或报告生成。 学习EJB不仅需要理解其理论基础,还需要通过实践来...
在EJB 3.0及其后续版本中,它们变得更加轻量级,易于使用,降低了对开发者的要求。 1. **Stateful Session Beans**:这类Session Bean维护了与客户端的会话状态,能够记住用户在整个交互过程中的状态。这在需要跟踪...