使用调度程序
调度程序使 Java™ Platform, Enterprise Edition (Java EE) 应用程序任务能够在请求时运行。调度程序还允许插入定制记录实用程序或工作流程应用程序,使应用程序开发者能创建自己的无状态会话 Enterprise JavaBeans (EJB) 组件,以便在任务生命周期中接收事件通知。
关于此任务
您可以安排以下类型的任务:
- 调用会话 Bean 方法
- 将 Java 消息服务 (JMS) 消息发送到队列或主题
无状态会话 EJB 组件还用于提供一般日程表。开发者可以使用提供的日程表 Bean 或者为现有的业务日程表创建自己的日程表 Bean。例如,您的某个业务流程可能涉及开具服务发票。调度程序通过使用无状态 EJB 组件,您可以安排何时向已收到发票的客户定期发送电子邮件。调度程序服务根据任务的元数据执行这些任务并根据需要重复执行任务。
调度程序是 Enterprise Java Beans 的计时器服务针对持久性计时器运行所依据的机制。可以将 EJB 计时器服务配置为使用调度程序提供的多个功能。请参阅配置计时器服务信息以了解更多详细信息。非持久性计时器不使用调度程序服务,但它们可以使用调度程序的工作管理器。非持久性计时器直接使用工作管理器。
使用下表以确定最合适您的持久性计时器服务:
调度程序 | EJB 计时器 |
---|---|
运行无状态会话 EJB 组件并发送 JMS 消息 | 运行所有 EJB 类型(有状态会话 Bean 除外) |
持久性、事务性和高可用性 | 持久性、事务性和高可用性 |
确保任务仅运行一次 | 如果计时器 EJB 使用容器管理的全局事务,计时器确保仅运行一次 |
使用任何计算规则运行重复任务 | 使用以毫秒为单位定义的重复时间间隔运行重复任务 |
使用修改过的固定延迟时间计算来确定重复时间间隔(根据前一个任务的开始时间确定下一次运行时间) | 使用定量时间计算来确定重复时间间隔(根据原先计划的时间确定下一个任务的时间) |
使用 NotificationSink 无状态会话 EJB 组件的程序化任务监视功能 | 无程序化计时器监视 |
停止运行后期任务或对时间敏感的任务 | 停止运行后期任务或对时间敏感的任务(通过在 javax.ejb.TimedObject 实现中手动检测来实现) |
管理任何任务生命周期(通过程序或 Java 管理扩展 (JMX) 来查找、暂挂、继续、取消和清除任务) | 通过程序查找和取消它的计时器。管理员使用命令行实用程序来查找和取消计时器。 |
存储数据的定量文本,如 Name(外部存储的任意数据) | 使用计时器存储任意数据 |
此任务说明了如何管理、开发调度程序和后续任务并对它们进行互操作。