有没有办法在单个 EJB 执行中运行多个线程?
我要做的本质上是一个 ETL 过程:onMessage
MDB ( @MessageDriven
) 的方法将运行一个查询,然后启动多个线程以将行插入到某个目标表中(所有本地 JDBC,而不是 JPA。)
它也可以很容易地成为@Stateless
会话 bean。
问题是——你能Executors.newFixedThreadPool
在 EJB 中使用吗?即使根据规范它不是严格合法的,如果后台线程没有访问任何 Java EE / 容器管理的资源,你能侥幸逃脱吗?
如果没有,有没有更好的方法来做到这一点?我知道@Async
但会失去对每个作业允许的线程数的控制。