jakarta ee在哪里可以配置Java ee 6中@Asynchronous调用后面的线程池?
我最近了解到,只需添加@Asynchronous
注释,就可以轻松地生成any session bean method Asynchronous
例如
@Asynchronous
public Future<String> processPayment(Order order) throws PaymentException {
...
}
我知道JavaEE7添加了Concurrency Utilities,但是在JavaEE6中,@Asyncronous
方法的线程池配置在哪里?有没有办法设置超时?它是固定线程池吗?缓存的一个?优先考虑什么?它在容器中的某个地方是可配置的吗
# 1 楼答案
尽管我发现的解决方案仅在JavaEE7/GlassFish 4.1上进行了测试,但我认为它应该适用于GlassFish 3。我也是
java上有一个JIRAentry。net中列出了不同的设置。由于Oracle将停止该网站,我将在此处引用相关帖子(添加格式):
通过该线程,我还发现了一个blog post,它解释了核心池和最大池大小是如何工作的。引用要点:
# 2 楼答案
我认为可以通过从带注释的@timeout方法调用Future.cancel(boolean)来实现超时。需要保留对异步方法返回的未来的引用,单例ejb可以用于此目的
编辑(以下新增内容):
在glassfish中,您可以通过在管理控制台中设置以下属性来配置ejb池
见Tuning the EJB Pool