ejb bean实例池jboss EAP 6.1

时间:2014-02-14 10:49:58

标签: java performance java-ee jboss7.x

在我们的项目中,我们正在从JBoss5迁移到Jboss EAP 6.1。 当我在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>

我不清楚max-pool-size参数。这个限制在JBoss或池上部署的每个无状态EJB bean的20个实例最多只能有20个实例,而不管无状态EJB bean的数量。

2 个答案:

答案 0 :(得分: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();
}

我认为pool是非静态字段,是为每种类型的组件(ejb类)创建的。

答案 1 :(得分:1)

Red Hat documentation

  

bean池的最大大小。

此外,如果您转到EAP的管理面板并转到个人资料 - &gt;容器 - &gt; EJB3 - &gt; Bean Pools - &gt; “需要帮忙?”它说

  

最大池大小:池可以使用的最大Bean实例数   保持在给定的时间点

我认为这意味着游泳池最多只会有20个实例。


编辑:回想起来,answer by Sergey Kosarev说每个实例似乎足够令人信服,你应该相信它。