2

アプリケーションは、EJB の @Asynchronous アノテーションを介して一連のスレッドを起動しています。ただし、JBoss (これに反して) は、起動されるスレッドの数を制限していません。デバッグは、上記の問題でリンクされた XML で構成されたものではなく、既定のクラスを使用していることを示しています。クラスのコメントには次のように書かれています。

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クラスを提供していないのか、また、これが確実に行われるようにするにはどうすればよいかということです。

4

1 に答える 1

1

JBoss AS 6.1は実際にデフォルトでスレッド数を制限するはずですが、バグのためにこれは単に起こりません。残念ながら、グローバル設定は警告なしに無視されます。

あまり多くのBeanに関係しない場合は、org.jboss.ejb3.annotation.Poolアノテーションを使用できます。

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

ただし、私が間違っていなければ、これによりBeanごとにプールが作成されることに注意してください。

于 2012-08-14T18:10:00.233 に答える