如何配置无状态 EJB (JBOSS) 的最小实例数



我有一个无状态的 ejb,需要一些时间来初始化。 为了避免这种成本,我希望始终有一个最小数量的 EJB 实例化。 是否有类似 minInstances 的东西,我可以在类似于 MDB 最小实例的基础上配置类似 bean?我怎样才能做到这一点?

看看 Wildfly 10.x 中使用的StrictMaxPool实现,没有设置最小大小的选项。

XSD wildfly-ejb3_4_0.xsd 也不知道最小大小:

<xs:complexType name="strict-max-poolType">
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="max-pool-size" type="xs:positiveInteger" default="20" use="optional"/>
    <xs:attribute name="derive-size" type="xs:string" use="optional"/>
    <xs:attribute name="instance-acquisition-timeout" type="xs:positiveInteger" default="5" use="optional"/>
    <xs:attribute name="instance-acquisition-timeout-unit" type="timeout-unitType"
                  default="MINUTES" use="optional"/>
</xs:complexType>

另一方面,StricMaxPoolrelease方法确实将所有释放的豆子放回原处:

public void release(T obj) {
        if (ROOT_LOGGER.isTraceEnabled()) {
            ROOT_LOGGER.tracef("%s/%s Free instance: %s", pool.size(), maxSize, this);
        }
        pool.add(obj);
        semaphore.release();
    }

这意味着一旦您创建了max-pool-size豆,池就不会缩小。因此,您可以实现一些在启动期间填充池的@Startup bean。

最新更新