Problemas com Classe Static + Autenticação do usuário

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

mostra a classe que esta guardando o usuario

resolvido com FlexContext.