Как ограничить размер пула MDB на Glassfish v3 - PullRequest
4 голосов
/ 19 февраля 2011

мой Message Driven Bean выполняет очень интенсивные операции, поэтому я хотел бы ограничить его размер пула, иначе мой сервер был бы перегружен. Я попробовал это (код), но он не работает, его пул все еще 32 (эмпирически проверен, время от времени я перезагружаю сервер, чтобы не было объединенных экземпляров).

@MessageDriven( mappedName = "jms/TestTopic", activationConfig = {
    @ActivationConfigProperty( propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge" ),
    @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Topic" ),
    @ActivationConfigProperty( propertyName = "subscriptionDurability", propertyValue = "Durable" ),
    @ActivationConfigProperty( propertyName = "clientId", propertyValue = "Reader" ),
    @ActivationConfigProperty( propertyName = "subscriptionName", propertyValue = "Reader" ),
    @ActivationConfigProperty( propertyName = "endpointPoolMaxSize", propertyValue = "1" ),
    @ActivationConfigProperty( propertyName = "endpointPoolResizeCount", propertyValue = "1" ),
    @ActivationConfigProperty( propertyName = "endpointPoolSteadySize", propertyValue = "0" )
} )
public class Reader implements MessageListener {

Я использую EJB 3 на Glassfish v3 на JDK 6. Приложение использует стандарт EE 6.

Можете ли вы помочь мне, как ограничить бассейн, пожалуйста? Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2011

Я бы порекомендовал создать файл sun-ejb-jar.xml и поместить туда конфигурацию пула. См. Bean-pool в http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_1-0.dtd для получения необработанных, кровавых подробностей. Подробности см. В бобовом пуле в http://download.oracle.com/docs/cd/E19798-01/821-1750/6nmnbjlfi/index.html. Полированный.

0 голосов
/ 30 сентября 2014

Я перешел по ссылкам, опубликованным @vkraemer, и ниже приведен мой фрагмент кода. Кажется, что steady-pool-size и resize-quantity также необходимы, потому что их значения по умолчанию не совместимы с низким максимальным размером пула.

<glassfish-ejb-jar>
    <enterprise-beans>
        <ejb>
            <ejb-name>SimpleClassName</ejb-name>
            <bean-pool>
                <steady-pool-size>1</steady-pool-size>
                <resize-quantity>1</resize-quantity>
                <max-pool-size>6</max-pool-size>
            </bean-pool>
        </ejb>
    </enterprise-beans>
</glassfish-ejb-jar>

Но помните о :

Установка небольшого значения max-pool-size может привести к чрезмерному разрушению объекта (и в результате чрезмерное создание объекта), поскольку экземпляры уничтожаются из пула, если текущий размер пула превышает max-pool-size.

... из GlassFish руководство по настройке производительности

...