我有一个EJB
的列表,每个可能会运行超过1分钟。我想以异步方式在循环中运行它们,然后在超时10秒后使用Future
输出检查结果。
据我了解,方法上的ExecutorService
和@Asynchronous
注释都可以为我提供此功能。
我应该何时使用Asynchronous
注释,何时使用ExecutorService
?
谢谢
答案 0 :(得分:2)
从我的观点来看,我坚持使用EJB功能,因此我会使用@Asynchronous注释,它似乎非常适合您的需求...... ExecutorService是为Java SE世界而制作的,我赢了'建议您直接在Java EE 6服务器中使用它。
答案 1 :(得分:0)
谁在调用EJB?如果它是一个servlet,那么你可能会考虑异步servlet支持。
异步EJB比创建自己的线程(通过ThreadPoolExecutor)更有用,因为容器将在异步线程上建立线程上下文:上下文类加载器,java:名称空间,安全性等。您的应用程序服务器可能还具有其他特性对其管理的线程的服务(例如,监视,超时等)。