我可以在ejb中使用ExecutorService吗?

时间:2015-04-15 16:55:51

标签: ejb-3.0 executorservice

我有一个场景,通过循环学生列表,从一个ejb调用中生成各个学生的结果。我正在考虑在ejb调用中使用executorService创建处理每个学生的线程。目前我只是查看我的ejb一次。

2 个答案:

答案 0 :(得分:2)

我认为这篇文章应该回答你的问题

EJB's and Threading

通常,EJB不应该生成新线程或者“手工制作”异步执行。

答案 1 :(得分:1)

在EE 7+服务器中,您应该只使用JSR 236,这样您的应用程序就可以访问由应用程序服务器管理的执行程序/池。

否则,从理论上讲,EJB规范不允许EJB创建自己的ExecutorService,这将创建/管理自己的线程:

  

企业bean不得尝试管理线程。企业   bean不得尝试启动,停止,暂停或恢复线程,或者   更改线程的优先级或名称。企业bean一定不能   尝试管理线程组。

     

这些函数是为EJB容器保留的。允许   管理线程的企业bean会减少容器的   正确管理运行时环境的能力。

实际上,如果您完全控制运行应用程序的服务器(您知道正在运行哪些其他应用程序以及为了避免系统过载而创建了多少线程/池),它可能会起作用,以及您限制在这些线程中执行的操作(例如,java:comp查找无法正常工作,事务行为可能会受到限制等。)