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).