EJB без сохранения состояния с большим количеством внедренных экземпляров EJB

Я знаю, что EJB без сохранения состояния хранятся в пуле и создаются по мере необходимости, мой вопрос: что происходит, когда есть больше зависимостей EJB, например, с чем-то вроде этого:

@Remote
@Stateless
public class Master_EJB{
     @EJB
     private EJB_A ejb_A;

     @EJB
     private EJB_B ejb_B;
}

EJB_A и EJB_B также являются EJB без сохранения состояния.

В худшем случае, если есть две петиции в одно и то же время, сервер извлечет два экземпляра Master_EJB из пула (или создаст, если необходимо).

Но если из этих двух вызовов одному нужен только EJB_A, а другому только EJB_B, сколько нужно экземпляров: 4 (2 Master_EJB + 1 EJB_A + 1 EJB_B) или 6 (2 Master_EJB + 2 EJB_A + 2 EJB_B)?

1 ответ

Решение

EJB_A и EJB_B не имеют состояния или сохраняют состояние?

Если состояние не указано, ответ зависит от типа используемого контейнера / пула и недавней ситуации (количество запросов, загрузка сервера и т. Д.). Если с сохранением состояния и контейнером будут созданы 2 экземпляра Master_EJB, то будут созданы два экземпляра EJB_A, а также два экземпляра EJB_B.

Помните, что контейнер может создавать два экземпляра Master_EJB - это зависит от самого контейнера и текущей ситуации (также, контейнер может решить обработать запрос, используя только один экземпляр Master_EJB).

Другие вопросы по тегам