2012-08-13 25 views
2

我们的应用程序通过EJB上的@Asynchronous注释启动一系列线程。但是,JBoss(与this相反)并不限制启动的线程数。调试表明它使用的是默认类,而不是上面问题中链接的XML中配置的类。在类的评论说:JBoss 6.1不限制它使用@Asynchronous启动的线程数

Static singleton access to a default java.util.concurrent.ExecutorService 
implementation used by clients who do not supply a 
org.jboss.ejb3.async.spi.AsyncInvocation to handle asynchronous 
EJB 3.1 invocations. 

所以,问题是在什么情况下是JBoss的不提供一个org.jboss.ejb3.async.spi.AsyncInvocation类以及如何确保这种情况发生?

回答

1

JBoss AS 6.1的确应该默认限制线程的数量,但是由于一个bug,这根本就不会发生。令人遗憾的是,全球环境毫无预兆地被忽视。

如果它不涉及过多的豆类,可以使用org.jboss.ejb3.annotation.Pool注释:

@Pool(value = POOL_IMPLEMENTATION_STRICTMAX, maxSize = 10) 
public class SomeBean { 
    // ... 
} 

不过要小心,如果我没有记错的话,这将创建一个bean实例池。

+0

谢谢Arjan。你知道这个bug是否记录在任何地方?我找不到。 – Yishai 2012-08-14 18:29:17

+0

我不确定它是否记录在某处。 JBoss AS 6.0在发布之后很快就会终结。社区不得不大声疾呼,甚至6.1版本发布,所以6.1中的bug没有得到很多关注。 – 2012-08-14 18:53:44