Я хочу получить доступ к нескольким экземплярам singletonA
и singletonB
синглтона без интерфейса MySingleton
.Сначала экземпляры определяются в другом классе Singleton Configurator
:
MySingleton.java
@Singleton
@LocalBean
public class MySingleton {
...
}
Configurator.java
@Singleton
@Startup
@LocalBean
public class Configurator {
@EJB MySingleton singletonA;
@EJB MySingleton singletonB;
}
Код выше, по-видимому, работает.
Теперь мне нужно внедрить эти 2 экземпляра MySingleton в компонент, управляемый сообщениями:
MDB.class
@Stateless
public class MDB implements MessageListener {
@EJB (lookup="?") MySingleton singletonA;
@EJB (mappedName="??") MySingleton singletonB;
}
Но в этот момент я полностью потерян.Я знаю, что мог бы упростить ситуацию, определив 2 экземпляра как 2 (пустые) реализации уникального интерфейса.Но у меня есть некоторые проблемы, потому что класс содержит некоторые нестатические поля, поэтому я не могу определить его как интерфейс.
EDIT
Из-за природы MDBЯ не могу передать Singletons по ссылке.Наконец, я хотел бы избежать создания двух идентичных реализаций MySingleton.
Благодаря полученным ответам я переосмыслил всю архитектуру и должен согласиться с тем фактом, что определение MySingleton как Stateful было бы хорошо, так какхорошо.