Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Сколько инстансов создается


Автор: danilka 18.2.2010, 13:05
Доброе время суток всем.

Jboss 5.1.0

Stateless EJB 3.0 выставлен как веб сервис.
Увидели в логе, что при дергании метода WS создается 2 инстанса этого EJB.
Поставили счетчики на вызовы конструктора и метода помеченного @PostConstruct.
В итоге за время работы приложения видно что 4 раза вызывался и конструктор и PostConstruct.

Код

@Stateless
@WebService(...)
@SOAPBinding(...)
public class Bean {

    private static AtomicInteger constrCnt = new AtomicInteger(0);
    private static AtomicInteger postCnt = new AtomicInteger(0);

    public Bean() {
        log.fatal(constrCnt.incrementAndGet());
    }

    @PostConstruct
    public void construct() {
        log.fatal(postCnt.incrementAndGet());
    }
}


А проблема вот в чем JMX-Console про этот бин говорит следующее:
CreateCount 3
CurrentSize 2
RemoveCount 1

В общем как будто создавалось только 3 инстанса.

Как можно объяснить эти расхождения и каким образом Jboss можно побудить создать 2 инстанса в момент дергания метода WS?



Автор: _sten_ 20.2.2010, 21:13
согластно @EJB спецификации контейнер создает пул Stateless бинов

контролировать пул можно с помощью джибосовских аннотаций, к примеру:
Код

import org.jboss.ejb3.annotation.*;
import org.jboss.ejb3.annotation.defaults.PoolDefaults;
@Pool(value = PoolDefaults.POOL_IMPLEMENTATION_STRICTMAX, maxSize = 1, timeout = 10000)


но сильно ограничивать размер пула нистоит, потому что этот бин станет ботелнеком в апликухе

Автор: danilka 24.2.2010, 10:47
Цитата(_sten_ @  20.2.2010,  21:13 Найти цитируемый пост)
согластно @EJB спецификации контейнер создает пул Stateless бинов

....
но сильно ограничивать размер пула нистоит, потому что этот бин станет ботелнеком в апликухе


Это все конечно хорошо и правильно, а что на счет моих вопросов?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)