Как ограничить размер пула MDB на Glassfish v3

мой компонент, управляемый сообщениями, выполняет очень интенсивные операции, поэтому я хотел бы ограничить размер его пула, иначе мой сервер был бы перегружен. Я пробовал это (код), но это не работает, его пул по-прежнему 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.

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


person Gaim    schedule 18.02.2011    source источник
comment
связанные: stackoverflow.com/questions/20471726/   -  person dedek    schedule 04.10.2014


Ответы (2)


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

person vkraemer    schedule 18.02.2011
comment
Прекрасно работает с файлом sun-ejb-jar.xml Спасибо. - person Hasan Tuncay; 22.01.2015

Я перешел по ссылкам, опубликованным @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 руководство по настройке производительности

person dedek    schedule 30.09.2014