Acesso a várias base de dados variável conforme usuário logado, JPA + EJB3 + JSF

3 respostas
V

Galera,

Minha aplicação está utilizando EJB3 + JPA + JSF e a questão é a seguinte, como acessar bancos de dados diferentes a partir de uma variavel que está no banco.

Por exemplo, tenho a tabela de usuário que loga no sistema que está na base default, e cada usuário está atrelado a uma empresa, e cada empresa tem uma base diferente.

Tenho um banco default que faz o login do usuário, e já consigo acessar uma outra base criando vários persistence-unit em meu percistence.xml.

Agora como utilizar o EntityManager correto para acessar a base correta através do usuário que está logado no sistema ?

Tentei utilizar EJB Estateful mais não tive sucesso, não sei se utilizei da for incorreta. Como acessar os dados que estão na sessão HTTP…

Alguma dica ?

3 Respostas

F

Acho que uma possibilidade seria implementar um DataSource. Só não sei se é viável.

L

O uso de EJB Statefull não tem nada a ver.

A solução é você ter vários DataSources (com acesso via JNDI), um para cada banco. Depois, ter vários PersistenceContext, cada um usando um data source distinto.

Aí no seu EJB, você teria uma “lógica de decisão” sobre quem é o usuário logado, que possibilitaria a busca do EntityManager (ou EntityManagerFactory) correto. Implicação: você perderia a possibilidade de injeção de dependência do EJB3.

V

Obrigado pela dica, já tinha cogitado a possibilidade de fazer a logica para escolher qual banco utilizar…mais ai então eu teria que passar sempre o usuário logado como parametro para metodos da camada de negócio ? Como eu faria isso de uma forma mais lógica…?

Criado 28 de agosto de 2009
Ultima resposta 31 de ago. de 2009
Respostas 3
Participantes 3