Ajuda Singleton de conexao

Pessoal desenvolvo em java para desktop, estou utilizando toplink como camada de persistencia… porem estou com um problema… cada vez q eu conecto meu programa principal no banco… ele me da como se tivesse 46 usuarios no banco. logo se eu conectar 3 clientes no mesmo banco estora o numero de usuario e nao consigo

eu tenho a seguinte classe de conexao

[code]
public class ConexaoNotas {

private static ConexaoNotas instancia;
private static EntityManagerFactory emf;
private static final String NOMEPU = "NotasPU";  
public static  EntityManager SESSION;  


public static synchronized void conectar(){
    Map propertiesMap = new HashMap();

    try {


        String ipServidor = VerificaIpConexao.getIpServidor();
       propertiesMap.put(TopLinkProperties.JDBC_URL, "jdbc:postgresql://" + ipServidor + ":5432/db_dnaso");

        emf = Persistence.createEntityManagerFactory(NOMEPU, propertiesMap);

        if (emf == null) {
          emf = Persistence.createEntityManagerFactory(NOMEPU, propertiesMap);
       }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static ConexaoNotas getInstance() {
    if (instancia == null) {
        instancia = new ConexaoNotas();
    }
    return instancia;
}

      
public static EntityManager getCurrentEM()  {
       if (SESSION == null) {    
           conectar();  
           SESSION = emf.createEntityManager();  
           SESSION.clear();

        SESSION.setFlushMode(FlushModeType.AUTO);
       }  
       return SESSION;  
   }  
     
public static void fecharConexao() {   
    if (SESSION != null) {  
       SESSION.close();  
       SESSION = null;
    }    
}  

    
public static void beginTransacao(){
  SESSION.getTransaction().begin();
}

public static void commitTransacao(){
   SESSION.getTransaction().commit();

}

public static void rollbackTransacao(){
    SESSION.getTransaction().rollback();
}

}[/code]

eu utilizo essa classe toda vez q vou fazer uma inclusao, alteracao ou exclusao

utilizo ela assim:

[code]
ConexaoNotas.getCurrentEM();
ConexaoNotas.beginTransacao();
try {
new FuncionarioFacade().persist(objeto); // update ou remove

           ConexaoNotas.commitTransacao();
} catch (Exception ex) {
    ex.printStackTrace();
    ConexaoNotas.rollbackTransacao();
}finally{
    ConexaoNotas.fecharConexao();
}[/code]

e qdo eu faco uma busca faco assim

Query query = ConexaoNotas.getCurrentEM().createNamedQuery("TbFuncionario.findAllFuncionario"); query.getResultList();

vale lembra q eu tenho varios subprojetos( todos utilizam esse mesmo esquema de conexao, para inserir, alterar, etc) e eles sao adicionadas no meu projeto principal…

alguem sabe como arrrumar isso???

jovem…o erro é realmente sobre “Quantidade de Conexões”, ou “Quantidade de Cursores Abertos”???

testa o seguinte, cria um construtor privado nesta sua classe ai e verifica se em outra parte do seu sistema tem outra classe instanciando atravez do construtor e se esta utilizando o singgleton que vc criou.

Entao e sobre usuarios conectados no banco… qdo tento conectar mais de 1 da que existe mtos usuarios conectados… o banco retorna esse erro… entendeu