Я создаю модуль EJB3, который пытается соблюдать конкретный шаблон оформления фасада/реализации. Мой фасад должен быть полностью EJB бесплатно.Как определить конструктор сеанса сеанса EJB3
У меня есть 2 класса в этом модуле: entity-компонент и сеансовый компонент, который является менеджером этого объекта. Менеджер содержит атрибут EntityManager.
У меня также есть фабрика, которая запускает мой менеджер, но эта фабрика не знает о реализации менеджера (поэтому не знает об EJB). Завод может получить имя класса менеджера, используя файл свойств. Завод будет экземпляр менеджер:
Class lClass = Class.forName (lClassName);
corporateActionManager = (ICorporateActionManager) lClass.newInstance();
Мой вопрос: могу ли я объявить конструктор в реализации моего менеджера, а затем, внутри этого конструктора, инициализировать мой EntityManager?
Как правило, я бы просто использовать @PersistenceContext аннотацию над EntityManager:
@PersistenceContext(unitName = "my_persistence_unit")
private EntityManager em;
Но, видимо, это не работает, когда класс непосредственно экземпляр.
Я пытался что-то вроде этого:
public CorporateActionManagerImpl() {
Context jndi;
try {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my_persistence_unit")
em = emf.createEntityManager();
} catch (NamingException e1) {
e1.printStackTrace();
}
}
Но тогда я получаю NoInitialContextException, по-видимому, мой контекст JNDI не правильно инициализирован.
Может ли кто-нибудь помочь мне здесь?
Благодаря