EJB方法的并发线程

时间:2014-10-19 14:24:17

标签: java concurrency ejb

我有一个无状态EJB,其中包含处理数据的方法。通常方法工作5..20秒

我需要大约10个线程,它们同时执行该方法。所以我为该方法做了注释@Schedule(second = "*", minute = "*", hour = "*") 但容器(Glassfish 4)只为我的方法启动了一个线程。

我尝试使用注释@Asynchronous,但它没有效果

我该怎么办?

1 个答案:

答案 0 :(得分:2)

使用@Schedule(second = "*", minute = "*", hour = "*")编写第二个类来调用您的@Asynchronous EJB方法 - 然后,如果持续时间如您所说,它应该每秒启动一个新线程。

最小示例

Caller.java

public class Caller {

    @EJB
    AsyncEJB asyncEjb;       

    @Schedule(second = "*", minute = "*", hour = "*")
    public void call() {
        this.asyncEjb.call(); 
    }
}

AsyncEJB.java

@Stateless
public class AsyncEJB {

    @Asynchronous
    public void call() {
        // Do long running stuff.
    }
}