我有一个无状态EJB,其中包含处理数据的方法。通常方法工作5..20秒
我需要大约10个线程,它们同时执行该方法。所以我为该方法做了注释@Schedule(second = "*", minute = "*", hour = "*")
但容器(Glassfish 4)只为我的方法启动了一个线程。
我尝试使用注释@Asynchronous
,但它没有效果
我该怎么办?
答案 0 :(得分:2)
使用@Schedule(second = "*", minute = "*", hour = "*")
编写第二个类来调用您的@Asynchronous
EJB方法 - 然后,如果持续时间如您所说,它应该每秒启动一个新线程。
public class Caller {
@EJB
AsyncEJB asyncEjb;
@Schedule(second = "*", minute = "*", hour = "*")
public void call() {
this.asyncEjb.call();
}
}
@Stateless
public class AsyncEJB {
@Asynchronous
public void call() {
// Do long running stuff.
}
}