Pessoal,
Estou enfrentando um problema que para mim, não seria um problema!
Nos temos um sistema ERP e tenho uma auditoria feita por trigger de banco (oracle). Comecei a fazer alguns sistemas em paralelo a esse ERP e por necessidade de estar usando esse esquema de auditoria por trigger, fiz uma estrutura de autenticação por usuário com o hibernate sem usar o pool de conexão. (o login e senha do usuário é que abre a conexão com o banco). precisa ser desta forma pois na auditoria, uso o USER para auditar as informações e se usar o pool, vou ter sempre o usuário generico…
Minha estrutra está da seguinte forma.
Ao efetuar o login, eu guardo o usuário e a senha em uma static class e sempre que vou fazer alguma transação no banco, dou um usuario.getUser / usuario.getPwd e faço a autenticação atraves do EntityManagerProvider
[code]package hsr.lib.dao.emf;
import hsr.lib.dao.generic.PersistenceUnit;
import hsr.lib.entidade.Usuario;
import java.util.Hashtable;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class EntityManagerProvider {
private Hashtable<String, EntityManagerFactory> emf;
public EntityManagerProvider(){
emf = new Hashtable<String, EntityManagerFactory>();
}
public EntityManager getEntityManager(String persistenceUnit){
if (emf.get(persistenceUnit) == null){
emf.put(persistenceUnit, Persistence.createEntityManagerFactory(persistenceUnit, PersistenceUnit.build(Usuario.getLoginVO())));
}
return emf.get(persistenceUnit).createEntityManager();
}
public EntityManagerFactory getEntityManagerFactory(String persistenceUnit){
if (emf.get(persistenceUnit) == null){
emf.put(persistenceUnit, Persistence.createEntityManagerFactory(persistenceUnit, PersistenceUnit.build(Usuario.getLoginVO())));
}
return emf.get(persistenceUnit);
}
public EntityManager getEntityManagerFactory(String persistenceUnit, Map<?, ?> properties){
if (emf.get(persistenceUnit) == null){
emf.put(persistenceUnit, Persistence.createEntityManagerFactory(persistenceUnit));
}
return emf.get(persistenceUnit).createEntityManager(properties);
}
}[/code]
Classe Usuario
[code]public class Usuario {
private static LoginVO loginVO = new LoginVO();
private LoginVO loginVO;
public Usuario() {
loginVO = new LoginVO();
}
/**
* @param loginVO the loginVO to set
*/
public void setLoginVO(LoginVO loginVO) {
this.loginVO = loginVO;
}
/**
* @return the loginVO
*/
public LoginVO getLoginVO() {
return this.loginVO;
}
}
[/code]
O problema é que, quando o usuário1 loga, as informações são gravadas com o usuario1. quando o usuario2 loga, ele sobrepoen a informação existente na static class e então, todas as alterações passam a ser gravadas com o usuario2
Alguém consegue imaginar uma solução para esta situação, deixando a forma de autenticação como está, sem mudança muito drastica?
Obs: estou usando Flex