在我们的项目中,我们正在从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的数量。
答案 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)
bean池的最大大小。
此外,如果您转到EAP的管理面板并转到个人资料 - &gt;容器 - &gt; EJB3 - &gt; Bean Pools - &gt; “需要帮忙?”它说
最大池大小:池可以使用的最大Bean实例数 保持在给定的时间点
我认为这意味着游泳池最多只会有20个实例。
编辑:回想起来,answer by Sergey Kosarev说每个实例似乎足够令人信服,你应该相信它。