Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Вопрос по количеству EJB объектов в JBoss


Автор: alexadr 27.9.2008, 21:54
Всем добрый день.

Использую Stateless EJB 3.0 под JBoss сервером.
При этом есть некоторое непонимание того как рассчитывается максимальное количество EJB объектов в пуле контейнера.

После того как EJB задеплоен, - открываю консоль JBoss-а (http://localhost:8080/web-console/)
И там, в дереве выбираю:
System -> JMX MBeans -> jboss.j2ee -> "Мой собственный бин"

При этом показывается информация по моему бину. В числе прочего там есть таблица с атрибутами.
Два атрибута: AvailableCount и MaxSize равны по 30.
А атрибуты: CurrentSize и CreateCount равны по 0

Мне во первых интересно, откуда берется это число 30?

И второй момент.
Когда я в многопоточном режиме дергаю метод этого бина(100 тредов одновременно выполняют метод бина), то после этого атрибуты
CurrentSize и CreateCount становятся равными по 50.

Опять же мне не понятно, откуда эта цифра 50. И почему эта цифра не равна 30?

Я догадываюсь, что данные параметры должны где-то конфигурится, но че-то никак не получается пока найти где...

Автор: ivg 29.9.2008, 15:35
Цитата(alexadr @  28.9.2008,  00:54 Найти цитируемый пост)
откуда берется это число 30?

${JBOSS_HOME}/server/default/deploy/ejb3-interceptors-aop.xml:
Код

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

Можно эту же аннотацию прописать самому бину:
Код

@Stateless(mappedName = "somebean")
@org.jboss.annotation.ejb.PoolClass(maxSize = 99, value = org.jboss.ejb3.ThreadlocalPool.class)
public class SomeBean implements SomeBeanLocal {
    ...
}

Цитата(alexadr @  28.9.2008,  00:54 Найти цитируемый пост)
Опять же мне не понятно, откуда эта цифра 50.

Думаю, это может быть связано с кол-вом потоков сервера.
Цитата(alexadr @  28.9.2008,  00:54 Найти цитируемый пост)
И почему эта цифра не равна 30?

Думаю, что пул, используемый по умолчанию, специально не ограничивает свой размер, поскольку он эффективно ограничивается другими механизмами (ThreadLocal и WeekReference). Можно попробовать:
Код

@org.jboss.annotation.ejb.PoolClass (value=org.jboss.ejb3.StrictMaxPool.class, maxSize=30, timeout=10000)

PS: JBoss AS 4.2.2.GA

Автор: alexadr 29.9.2008, 16:47
спасибо за направление!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)