У меня есть 2 безгражданных EJB, как показано ниже.Безгосударственный EJB, требующий предварительной конфигурации от другого EJB
@Stateless
public class BeanA {
@EJB
private BeanB beanB;
@PostConstruct
public void init(){
// trying to do some pre-configuration
beanB.configure(Map params);
}
public void doSomething(){
beanB.doSomething();
}
}
@Stateless
public class BeanB {
}
Перед использованием необходимо выполнить предварительную настройку для каждого экземпляра BeanB. В большинстве случаев приведенный выше код выполняет эту работу, я думаю, из-за того, что экземпляры BeanB создаются только по запросам из экземпляров BeanA.
Но, наконец, я вижу, что иногда пул «BeanB» beans может содержать экземпляры, которые не были предварительно настроены. Следуя спецификации, такое поведение нормальное, поэтому я понял, что такой подход был неправильным.
Итак, мой вопрос в том, существует ли законный метод для такой предварительной конфигурации? Должен ли я создать BeanB Stateful вместо этого?
Что конкретно вы делаете в предварительной конфигурации BeanB? Откуда взялись параметры? Кажется, что BeanA и BeanB плотно соединены, например. совместно используйте некоторый жизненный цикл. Используются ли они самостоятельно? –
Параметры в основном вводятся в BeanA как env. но они не могут быть введены непосредственно в BeanB. Параметры используются для определения того, какая конкретная реализация компонента должна быть создана внутри BeanB. Не очень дорого для создания экземпляра запроса, но я бы предпочел попробовать сделать это только один раз. – user3714601
И вы правы, BeanA и BeanB никогда не используются независимо. – user3714601