2013-03-19 2 views
0

Я заметил, что когда есть много запросов и максимальный размер пула достигнут, другие запросы ждут, пока ресурс будет бесплатным. Как установить CommonsPoolTargetSource так, чтобы при достижении максимального размера пула создавались новые экземпляры объектов? Избыточные ресурсы также должны быть освобождены после его использования.Как увеличить размер пула CommonsPoolTargetSource по мере необходимости?

Первоначально, я пробовал искать minSize объект недвижимости, но выяснилось, что CommonsPoolTargetSource не имеет minSize. Ниже тело моей web.xml:

<bean id="simpleBeanTarget" class="com.bean.SimpleBean" scope="prototype">   
</bean> 

<bean id="poolTargetSource" class="org.springframework.aop.target.CommonsPoolTargetSource"> 
    <property name="targetBeanName" value="simpleBeanTarget" /> 
    <property name="maxSize" value="3" /> 
    <!-- How do I let the pool grow if more than 3 instances is needed? --> 
    <!-- And how do I release the excess instances after usage? --> 
</bean> 

<bean id="simpleBean" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="targetSource" ref="poolTargetSource" /> 
</bean> 

ответ

2

Попробуйте <property name="whenExhaustedActionName" value="WHEN_EXHAUSTED_GROW" />

или

<property name="whenExhaustedAction"> 
<util:constant static-field="org.apache.commons.pool.impl.GenericObjectPool.WHEN_EXHAUSTED_GROW"/> 
</property> 
+0

Привет, Луис! Благодаря! Я попытался установить 'whenExhaustedActionName' на' WHEN_EXHAUSTED_GROW', и мой пул теперь растет. Но мой пул не уменьшился до 3 после того, как я использовал новый объект. Когда будет удален новый экземпляр объекта? Как удалить лишние объекты, если они остаются неактивными в течение определенного периода времени? – Arci

+2

Попробуйте использовать свойства timeBetweenEvictionRunsMillis и minEvictableIdleTimeMillis, по умолчанию не существует выселения. –

+0

Спасибо! Сначала будет экспериментировать с свойствами CommonsPoolTargetSource. :) – Arci

Смежные вопросы