Rips
Rips

Reputation: 2004

ejb bean instance pool jboss EAP 6.1

In our project we are migrating from JBoss5 to Jboss EAP 6.1. When I was going through the configuration to be used in Jboss EAP 6.1, I stumbled upon below:

<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>

I am not clear about the max-pool-size argument.Is this limit 20 instances per Stateless EJB bean deployed on JBoss or pool will go only up to 20 instances irrespective of the no of stateless EJB beans.

Upvotes: 1

Views: 3551

Answers (2)

eis
eis

Reputation: 53482

Red Hat documentation says

the maximum size of the bean pool.

Also, if you go to admin panel of EAP and go to Profile -> Container -> EJB3 -> Bean Pools -> "Need Help?" it says

Max Pool Size: The maximum number of bean instances that the pool can hold at a given point in time

I would interpret that to mean that pool will go only up to 20 instances.


Edit: in retrospect, answer by Sergey Kosarev saying it is per instance seems convincing enough that you should probably believe that instead.

Upvotes: 1

Sergey Kosarev
Sergey Kosarev

Reputation: 71

I don't agree with eis. Here is code of 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();
}

As I see pool is non-static field and is created for every type of Component(ejb class).

Upvotes: 2

Related Questions