配置 Apache Commons Pool 以在启动时创建对象



我正在使用apache commons pool2配置一个对象池。池中的对象似乎仅在尝试借用对象时才创建。我希望预先创建对象,因此当需要借用第一个对象时,我准备了最少数量的对象。

我的弹簧配置看起来像这样:

<bean id="webSocketConnectionPool" class="org.apache.commons.pool2.impl.GenericObjectPool">
<constructor-arg ref="webSocketConnectionFactory"/>
<constructor-arg ref="webSocketConnectionPoolConfig"/>
</bean>
<bean id="webSocketConnectionFactory" class="com.blah.WebSocketConnectionFactory" />    
<bean id="webSocketConnectionPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
<property name="maxIdle" value="300"/>
<property name="maxTotal" value="1000"/>
<property name="minIdle" value="10"/>
</bean>

我可以看到在应用程序启动时创建了池,但 minIdle 设置似乎没有导致我想要的行为。工厂上的 create(( 方法仅在借用第一个对象时调用。

任何提示将不胜感激。

谢谢

我的解决方案是向以连接池作为成员的类的 init 方法添加一些逻辑,以添加对象。希望这将在未来对其他人有所帮助。

connectionPool.addObjects(connectionPool.getMinIdle());

最新更新