2014-02-14 2 views
1

В нашем проекте мы переходим от JBoss5 к Jboss EAP 6.1. Когда я проходил через конфигурации, которые будут использоваться в JBoss EAP 6.1, я наткнулся ниже:ejb bean instance pool jboss EAP 6.1

<pools> 
<bean-instance-pools> 
<strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="1" instance-acquisitiontimeout-unit="MILLISECONDS"/> 
<strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="1" instance-acquisitiontimeout-unit="MILLISECONDS"/> 
</bean-instance-pools> 
</pools> 

Я не ясно, о argument.Is макс бассейн размера этот предел 20 экземпляров на Stateless EJB боба развернутый на JBoss или пул, будет работать только до 20 экземпляров, независимо от отсутствия фагов EJB без состояния.

+0

Исторически я думаю, что было 20 объединенных экземпляров в bean-компоненте. Я согласен с тем, что он очень расплывчатый, именование предполагает, что в общей сложности есть всего 20 объединенных бобов, но это не может быть прав, поскольку это может вызвать проблемы, как только у вас будет более 20 EJB. Его также очень полезно, что эта часть не документирована:/ – Gimby

ответ

1

Red Hat documentation говорит

максимальный размер бобового бассейна.

Кроме того, если вы заходите в админ-панель EAP и переходите к профилю -> Контейнер -> EJB3 -> Bean Pools -> "Need Help?" он говорит

Max Pool Size: Максимальное количество экземпляров бинов, что пул может держать в данный момент времени

Я бы истолковать, что означает, что бассейн будет идти только до 20 экземпляров.


Edit: в ретроспективе, answer by Sergey Kosarev говорят, что это на один экземпляр кажется достаточно убедительным, что вы должны, вероятно, считают, что вместо этого.

+0

как она решает, какие компоненты должны быть созданы? – Rips

+0

@Rips, который зависит от конфигурации, либо компоненты создаются при запуске приложения, либо при первом использовании. Что касается того, требуется ли больше бобов, чем разрешено в пуле, я не знаю, какие бобы будут предпочтительнее. – eis

+0

Это неправильное понимание, ответ Сергея правильный. Если вы измените «org.jboss.as.ejb3» Loglevel на DEBUG и запустите JBoss, вы увидите список таких операторов, как «Использование конфигурации пула StrictMaxPoolConfig {name = slsb-strict-max-pool, maxPoolSize = 20, timeoutUnit = MINUTES, timeout = 5} для создания пула для Stateless EJB xxx " , что означает, что JBoss создает новый пул для каждого типа SLSB. – martoe

2

Я не согласен с eis. Вот код Wildfly 8.2.1 StatelessSessionComponent.java

public StatelessSessionComponent(final StatelessSessionComponentCreateService slsbComponentCreateService) { 
    super(slsbComponentCreateService); 

    StatelessObjectFactory<StatelessSessionComponentInstance> factory = new StatelessObjectFactory<StatelessSessionComponentInstance>() { 
     @Override 
     public StatelessSessionComponentInstance create() { 
      return (StatelessSessionComponentInstance) createInstance(); 
     } 

     @Override 
     public void destroy(StatelessSessionComponentInstance obj) { 
      obj.destroy(); 
     } 
    }; 
    final PoolConfig poolConfig = slsbComponentCreateService.getPoolConfig(); 
    if (poolConfig == null) { 
     ROOT_LOGGER.debug("Pooling is disabled for Stateless EJB " + slsbComponentCreateService.getComponentName()); 
     this.pool = null; 
     this.poolName = null; 
    } else { 
     ROOT_LOGGER.debug("Using pool config " + poolConfig + " to create pool for Stateless EJB " + slsbComponentCreateService.getComponentName()); 
     this.pool = poolConfig.createPool(factory); 
     this.poolName = poolConfig.getPoolName(); 
    } 

    this.timeoutMethod = slsbComponentCreateService.getTimeoutMethod(); 
    this.weakAffinity = slsbComponentCreateService.getWeakAffinity(); 
} 

Как я вижу, бассейн не является статическим полем и создается для каждого типа компонента (EJB класса).

Смежные вопросы