Pregunta

Estoy creando un módulo de EJB3 que trata de respetar un patrón de diseño específico fachada / aplicación. Mi fachada debe ser totalmente libre de EJB.

tengo 2 clases en este módulo: un bean de entidad y un bean de sesión, que es el gerente de esta entidad. El gerente contiene un atributo EntityManager.

También tengo una fábrica que crea instancias de mi grano de gerente, pero esta fábrica no tiene conocimiento de la ejecución del gerente (por lo tanto no sabe de EJB). La fábrica sólo puede recuperar el nombre de la clase del gestor de usar un archivo de propiedades. La fábrica será entonces una instancia del gestor de:

Class lClass = Class.forName (lClassName);
corporateActionManager = (ICorporateActionManager) lClass.newInstance();

Mi pregunta es: ¿puedo declarar un constructor en la ejecución de mi manager, y luego, dentro de ese constructor, inicializar mi EntityManager

?

Normalmente, yo sólo tiene que utilizar la anotación @PersistenceContext encima del EntityManager:

@PersistenceContext(unitName = "my_persistence_unit")
private EntityManager em;

Pero al parecer esto no funciona cuando la clase está directamente instancia.

He intentado algo como esto:

public CorporateActionManagerImpl() {
    Context jndi;
    try {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("my_persistence_unit")
    em = emf.createEntityManager();
    } catch (NamingException e1) {
    e1.printStackTrace();
    }
} 

Pero cuando me siento un NoInitialContextException, al parecer mi contexto JNDI no se ha inicializado correctamente.

¿Puede alguien ayudarme aquí?

Gracias

¿Fue útil?

Solución

Terminé la creación de otra clase "manager", que encapsular el bean de sesión y la inicialización en el constructor.

Se le añade otra capa, pero al final es mucho más fácil de resolver.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top