6

EJB がプールから削除されていないため、メモリ リークの問題が発生しています。EJB は 3.0 でステートレスです。

In my jboss jmx-console 4.3, the statistics of a particular ejb looks like:

AvailableCount  30
MaxSize     30
CurrentSize     5727
CreateCount     5727
RemoveCount     0

私の質問は、「Remove Count」が増加しないのはなぜですか? また、「現在のサイズ」が「MaxSize」よりも大きいですか?

4

1 に答える 1

3

SLSB がクリアされずにリークされるという恐ろしいバグに遭遇しました...数週間前に本番環境でこの問題に直面しました...

JBoss が推奨する唯一の回避策は、SLSBStrictMaxPoolの代わりに使用することです。ThreadLocalPoolカウントを賢く選択してください。

変更する必要がありますejb3-interceptors-aop.xml

<domain name="Stateless Bean">
...
  <annotation expr="!class(@org.jboss.annotation.ejb.PoolClass)">
     @org.jboss.annotation.ejb.PoolClass (value=org.jboss.ejb3.StrictMaxPool.class, maxSize=30, timeout=10000)
  </annotation>
</domain>

ここにあなたにいくつかの洞察を与えるためのいくつかのリンクがあります...

JBoss でのステートレス セッション Bean プーリング

すべての onMessage MDB 呼び出しで注入されるリソースの新しいインスタンス

ThreadlocalPool が InfinitePool からアクティブな BeanContext インスタンスを削除しない

于 2012-08-18T05:07:15.070 に答える