Асинхронный метод в шве всегда возвращает нуль QuartzTriggerHandle? - PullRequest
0 голосов
/ 19 октября 2011

Объект QuartzTriggerHandle, возвращаемый асинхронным методом в Seam, всегда 'null', задание начинается, но не может быть отменено или приостановлено.

На форуме seam я нашел следующий пример, который должен работать, но он не работает со мной.

@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;
    }
}

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Привет. Вы должны добавить что-то в component.xml

1-) async: кварц-диспетчер

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/

0 голосов
/ 11 ноября 2011

Вы не должны создавать QuartzTriggerHandle.Просто выполните свою работу в теле метода executeTask, среда выполнения шва позаботится о возвращении объекта QuartzTriggerHandle.Примерно так:

@Asynchronous
public QuartzTriggerHandle performTask(@Expiration java.util.Date when,
        @IntervalDuration long duration) {
    // do stuff
    return null;
}

QuartzTriggerHandle является сериализуемым, вы можете сохранить его в таблице базы данных, чтобы впоследствии можно было отменить задачу.

...