开发和调度任务

要开发和调度任务,请使用配置的调度程序。

过程

  1. 查询配置的调度程序。 请参阅“访问时间表”主题。
    您可以通过两种不同的编程模型获得各个配置的调度程序:
    • 一个 Java™ Platform, Enterprise Edition ( Java EE )服务器应用程序(例如servlet或企业级 JavaBeans (EJB)组件)可以使用调度器API。 调度程序可通过使用Java命名和目录接口(JNDI)名称或资源引用进行查找来访问。
    • Java管理扩展(JMX)应用程序(如wsadmin脚本)可通过WASScheduler MBeans使用调度程序API。
  2. 开发任务。

    Scheduler API 支持 TaskInfo 接口的不同实现,每个实现都可以用来调度特定的一类工作。 有关详细信息,请参阅《开发调用会话 bean 的主题》和《开发发送 Java 消息服务 (JMS) 消息的主题》。 在《开发发送Java消息服务(JMS)消息主题的任务》中引用的任务对象,可将JMS消息发送至队列或主题。

    注意: 仅支持在EJB容器或Web容器(企业级Bean或Servlet)内部通过调度程序界面创建和操作计划任务。 不支持从 Java EE 应用程序客户端容器中查找并使用已配置的调度程序。
  3. 接收调度程序通知。
    您可以对任务设置通知接收器,这样当调度程序对任务执行操作时,您可以接收到调度程序生成的通知事件。
  4. 使用定制日程表。
    您可以将 UserCalendar 会话 Bean 指定到任务,该任务允许调度程序使用定制和预定义的日期算法确定运行任务的时刻。 请参阅“UserCalendar 接口”主题以了解详细信息。
  5. 向调度程序提交任务。
    创建 TaskInfo 对象后,您可以通过调用 Scheduler.create() 方法将它提交给调度程序用于创建任务。
  6. 使用调度程序管理任务。
  7. 使用调度程序保护任务。

示例

您可以从任何 Java 应用程序中使用 SIMPLE 和 CRON 日程表。 此示例将说明该过程。

使用缺省调度程序日程表。 以下代码示例说明了如何正确和错误地使用连接。

使用默认调度程序日历需要查找默认的 UserCalendarHome 企业级 JavaBeans (EJB)主对象,创建 UserCalendar bean并调用 applyDelta( 方法。 有关 applyDelta 方法的详细信息以及 SIMPLE 和 CRON 日程表的语法,请参阅“UserCalendar 接口”主题。

import java.util.Date;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import com.ibm.websphere.scheduler.UserCalendar;
import com.ibm.websphere.scheduler.UserCalendarHome;

// Create an initial context
InitialContext ctx = new InitialContext();

// Lookup and narrow the default UserCalendar home.
UserCalendarHome defaultCalHome=(UserCalendarHome)
	PortableRemoteObject.narrow(ctx.lookup(
      UserCalendarHome.DEFAULT_CALENDAR_JNDI_NAME), 
	   UserCalendarHome.class);

// Create the default UserCalendar instance.
UserCalendar defaultCal = defaultCalHome.create();

// Calculate a date using CRON based on the current
// date and time.  Return the next date that is 
// Saturday at 2AM
Date newDate = 
    defaultCal.applyDelta(new Date(), 
        "CRON", "0 0 2 ? * SAT");