Bom dia a todos do GUJ,
Estou com uma questão de estrutural nas mãos. Estou com um projeto nas mãos que tem a seguinte estrutura: Um projeto (DAO.jar) que use JPA para encapsular os objetos de banco; um projeto (Negocio.jar) que use o (DAO.Jar) para encapsular a regra de negocio; e para finalizar a 1ª etapa, um projeto (WEB.jar) que é um sistema JSF2+primefaces, o (WEB.jar) usa o negocio para realizar as suas funções.
Uma informação importante é que após a 1ª leva de implementações será criado um novo projeto (Local.jar) que é sistema swing que usa o projeto (Negocio.jar).
Meu problema esta na criação e utilização do EntityManager. Estou preocupado com a utilização por parte do sistema web (execução em threads).
Em um contexto static eu crio o meu EntityManagerFactory.
static {
emf = Persistence.createEntityManagerFactory(“BANCO_DAO”);
}
Através dele todas as sessões (threads) podem criar um EntityManager. A questão em vogo é a armazenagem e reutilização por todos os objetos do DAO. A primeira ideia seria injetar o EntityManager mais esbarro no problema que a injeção só funcionar para mesmo projeto e para projeto web. Pensei também em colocar na sessão do usuário mais ai amaria o DAO.jar a utilização somente por sistemas WEB inviabilizando o reuso do DAO.jar e Negocio.jar.
A minha pergunta é como eu compartilho o EntityManager para os objetos que estão na mesma sessão (thread) de modo que eu possa controlar coisas como transações para gravações de vários DAOs tanto para o mundo web como o local?
Grato a todos por qualquer ajuda.
Por favor, hehe