2007-10-17

websphere中的Scheduler使用笔记

关键字: Scheduler
资源底下->Scheduler 新建一个后,点击"创建表"、"验证表"。例JNDI名为:tfjtaskcall
配置一个无状态session bean。例JNDI名:TfjSchedule


调用代码:
InitialContext context;
try {
 out.println("test servlet initializing....");
 //begin to test schedule
 //1. init context
 context = new InitialContext();
 //2. lOOkup schedule using its jndi name
 Scheduler scheduler = (Scheduler) context.lookup("tfjtaskcall");
 //3. create Class BeanTaskInfo
 BeanTaskInfo taskInfo = (BeanTaskInfo) scheduler.createTaskInfo(BeanTaskInfo.class);
 //4. lookup sessoin bean using its jndi name
 Object obj = context.lookup("TfjSchedule");
 //5. Narrow session bean
 TaskHandlerHome home = (TaskHandlerHome) PortableRemoteObject.narrow(obj,TaskHandlerHome.class);
 //6. add the schedule implementation into taskinfo class
 taskInfo.setTaskHandler(home);
 //7. set UserCalendar for task
 Calendar now = Calendar.getInstance();
 taskInfo.setStartTime(now.getTime());
 //   taskInfo.setInitialState(BeanTaskInfo.RUNNING);
 //   taskInfo.setStartTimeInterval("0 * * * * ?");
 //   taskInfo.setRepeatInterval("0 * * * * ?");
 taskInfo.setRepeatInterval("20seconds"); //间隔20运行一次,格式为SIMPLE可这样设置
 taskInfo.setNumberOfRepeats( -1); //一直运行,不停止
 //   taskInfo.setUserCalendar("com/ibm/websphere/scheduler/calendar/DefaultUserCalendarHome", "SIMPLE");//CRON 设置格式,默认为SIMPLE
 //8. submit the task to scheduler
 TaskStatus ts = scheduler.create(taskInfo);
 out.println("user calendar is: " + taskInfo.getUserCalendarSpecifier());
 out.println("test servlet end.");

 out.println("...schedule taskId:" + ts.getTaskId());
 //9. cancle the task and purged immEDIatelly
 //scheduler.cancel(ts.getTaskId(),true);
 out.println("The schedule job has been created successfully!");
}
catch (Exception e) {
 e.printStackTrace(System.out);
}


一次启动,重启后将会自动启动
评论
qiuyuanshan 2007-10-21
根据经验,在集群环境中,Schedule必须得建立在某个节点上,而不是建立在多节点环境下, 要不然启动老不成功,会报以下错误:

The Scheduler tfjtaskcall has initialized.
The Scheduler Daemon for instance tfjtaskcall has started.
The Scheduler Service has completed starting the Schedulers.
Scheduler tfjtaskcall (tfjtaskcall) has lost its lease and will no longer run tasks on this application server. Tasks will now run on server bj-pay3Cell01\bj-bill3Node01\s51_server1.
DCS Stack DefaultCoreGroup at Member bj-pay3Cell01\bj-bill3Node01\s51_server3: Connected a defined member bj-pay3Cell01\bj-bill3Node01\s51_server4.
qiuyuanshan 2007-10-17
IBM帮忙:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/scheduler/TaskInfo.html
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

qiuyuanshan
搜索本博客
最近加入圈子
存档
最新评论