Seam中Asynchronous方法返回的QuartzTriggerHandle对象总是为'null', 工作开始但不能取消或暂停。
在缝隙论坛中,我找到了下一个应该起作用的例子,但它不适用于我。
@Name("quartzObserver")
public class SCSQuartzObserver {
@In(create = true)
SCSQuartzTask quartzTask;
@SuppressWarnings("unused")
@Observer("org.jboss.seam.postInitialization")
public void observe() {
try {
Calendar cal = Calendar.getInstance();
cal.set(2040, Calendar.MAY, 10);
QuartzTriggerHandle handle = quartzTask.performTask(new Date(),
86400000l);
handle.cancel();
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Name("quartzTask")
@AutoCreate
public class SCSQuartzTask {
@Asynchronous
public QuartzTriggerHandle performTask(@Expiration java.util.Date when,
@IntervalDuration long duration) {
// do stuff
QuartzTriggerHandle handle = new QuartzTriggerHandle("SCSQuartzTask");
return handle;
}
}
thnx寻求帮助。
答案 0 :(得分:0)
您不应该创建QuartzTriggerHandle。只需在performTask方法的主体中完成工作,seam运行时将注意返回QuartzTriggerHandle对象。像这样:
@Asynchronous
public QuartzTriggerHandle performTask(@Expiration java.util.Date when,
@IntervalDuration long duration) {
// do stuff
return null;
}
QuartzTriggerHandle是可序列化的,您可以将其保存在数据库表中,以便稍后取消该任务。
答案 1 :(得分:0)
您好必须在component.xml中添加一些内容
1-)异步:石英调度
2 - )的xsi:的schemaLocation
http://jboss.com/products/seam/async
http://jboss.com/products/seam/async-2.2.xsd“
现在它会起作用
你可以找到Melih sakarya网站的例子
http://www.melihsakarya.com/2011/09/seam-de-zamanli-isler-scheduling/