从Container获取线程?

时间:2011-09-06 14:49:59

标签: java multithreading java-ee

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

但是有没有办法从Tomcat,Glassfish,Jboss等获得线程;从而访问他们的ThreadPool?

3 个答案:

答案 0 :(得分:3)

您可以使用commonj WorkManager。这是IBM和BEA提出的一项提议,用于提供完成此任务的标准方法(访问容器管理的线程)。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我已经看过至少一个实用程序类来获取Tomcat的线程池,但是走这条路是不明智的。创建这些线程是为了为EJB或Servlet的请求提供服务,而不是为了支持EJB或Servlet。你占用的每一个都只是另一个线程,无法用于服务对容器的请求。

你可能只是抛出一个静态的ThreadPool并使用一个静态初始化程序来解决这个问题的EJB规范,但你显然必须确保线程代码运行良好,否则它可能会真正使你的EJB陷入困境。 / p>