Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从容器中获取线程?_Java_Multithreading_Jakarta Ee - Fatal编程技术网

Java 从容器中获取线程?

Java 从容器中获取线程?,java,multithreading,jakarta-ee,Java,Multithreading,Jakarta Ee,在大多数应用服务器上,J2EE Ejb规范禁止“手动”创建线程,因为这些资源应该由服务器管理 但是有没有办法从Tomcat、Glassfish、Jboss等获取线程。;这样就可以访问他们的线程池了?我已经看到了至少有一个实用程序类可以访问Tomcat的线程池,但是这样做是不明智的。创建这些线程是为了服务EJB或Servlet的请求,而不是为了支持EJB或Servlet。您使用的每一个线程都只是另一个线程,无法为容器的请求提供服务 您可能只需要加入一个静态线程池并使用一个静态初始值设定项来绕过EJ

在大多数应用服务器上,J2EE Ejb规范禁止“手动”创建线程,因为这些资源应该由服务器管理


但是有没有办法从Tomcat、Glassfish、Jboss等获取线程。;这样就可以访问他们的线程池了?

我已经看到了至少有一个实用程序类可以访问Tomcat的线程池,但是这样做是不明智的。创建这些线程是为了服务EJB或Servlet的请求,而不是为了支持EJB或Servlet。您使用的每一个线程都只是另一个线程,无法为容器的请求提供服务


您可能只需要加入一个静态线程池并使用一个静态初始值设定项来绕过EJB规范,但显然您必须确保线程代码工作良好,否则它可能会真正损坏您的EJB。

从容器中获取线程的合法方法是使用JCA(Java连接器体系结构)。使用此技术实现的组件称为“资源适配器”,并打包为rar文件

实现非常详细,但在简单的情况下并不太复杂。祝你好运。

你可以使用。IBM和BEA提议提供一种标准方法来完成这项任务(访问容器管理的线程)

虽然它没有包含在实际的规范中,但是大多数容器都有实现


好问题!我以前也在OTN论坛上问过,但没有回应。作为@Robin,CommonJ是一个潜在的选择(WAS也提供了工作管理器,但它没有那么便携)。此外,我建议您观看,这应该正在进行中。直接使用线程的另一种方法可能是使用异步EJB调用。不过它还是很新的,我认为它是在EJB3.1中添加的。