seam中的异步方法总是返回null QuartzTriggerHandle?

时间:2011-10-19 09:50:58

标签: quartz-scheduler seam

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寻求帮助。

2 个答案:

答案 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/