Bom dia a todos.
Senhores estou com um problema, peço ajuda de
quem poder me dar uma direção
fiz uma aplicação desktop onde quando o usuario entra tem que fazer o login logicamente e depois informar onde ele
esta o andar por exemplo e depois abre a aplicação conforme o perfil dele. O problema esta que quando abre a tela do login e ele informa os dados e depois o andar esses dois processos continuam ativo e mais o do perfil o seja tem 3 X 200 usuario usando o sistema ficam em torno de 600 processos ativos na cpu e ai o processamento vai pro espaço o cliente ja quer devolver o sistema. Usei o profiler do netbeans e verifiquei que realmente fica ativo. Alguem tem alguma ideia do que eu posso fazer pra solucionar esse problema??? As consultas todas estam sendo fechadas, to dando dipose em todas as janelas etc. e nada.
Consulta do login
publicListconsultarUsuario(Usuariousuario){
EntityManagerentityManager=factory.createEntityManager();entityManager.getTransaction().begin();Stringsql="from Usuario where loginUsuario ="+usuario+" and senhaUsuario = "+usuario+" and situaUsuario = 'A' and exclusao is FALSE";Queryq=entityManager.createQuery(sql);entityManager.close();return(List)q;}
Tente dar um sysout na sua classe de conexão, para verificar a quantidade de conexões ativas, sessions abertas…
Acho que o problema não deve ser de banco… Acho que deve ser do processo lógico =)
batista.gerson
TheKill
fiz um teste aki… toda vez que eu entro no perfilo de Guichê demonstrado ai em cima se cria 4 conexoes com o banco, estranho verifiquei a conexao ele so vai uma vez no metodo e como vc pode ver a conexao ta sendo fechada. Estranho muito estranho.
TheKill
se mostra 4 é porque tem 4 né? uashusahusaha =)
Melhor dar uma analisada, com calma… é um ponto importante ^^
TheKill
Ps.: Pelo que eu vi, vc ta sempre dar um NEW … nao seria interessante já buscar um GetConexao GetSession ?
batista.gerson
Em que parte exatemante??? no EntityManager???
TheKill
Sim, e também no Guiche
batista.gerson
ms no Guiche nao da como eu vou chamar a outra janela
ai eu so to chamando a janela.
TheKill
ah ta, nao reparei…
batista.gerson
vou tentar fazer o q vc falou pra ver se resolve
vlw cara qlq resultado posto aki.
TheKill
acho que não eh problema do entity manager…
acho que deve ser no seu factory talvez… ou qndo vc pega as conexões
e ele ta normal cria uma conexao o problema e que quando eu passo no
entityManager.close();
aquela conexao continua ativa… Agora nao sei se vc pode me ajudar, qndo eu faço o login a aplicação vai criar uma conexao no banco e qndo eu der o close aquela conexao tem q fechar, ou seja se eu conecto tem 1 conexao quando eu passar no close vai ter 0 conexao.
TheKill
Huum, tá estranho isso… tem algo falho na sua lógica…
Tem que analisar bem o código todo
TheKill
vc nao trabalha com Sessions??? Ta fechando suas Sessions do banco??
batista.gerson
Nao é aplicação desktop, eu faço assim
crio um EntityManagerFactory
StringurlBanco=PropertyHelper.getInstance().getIpServidor();MapconfigOverrides=newHashMap();privateEntityManagerFactoryfactory;privatestaticUsuarioDAOinstance=newUsuarioDAO();privateUsuarioDAO(){urlBanco="jdbc:postgresql://"+urlBanco+"/fila";configOverrides.put("hibernate.connection.url",urlBanco);EntityManagerFactoryemf=Persistence.createEntityManagerFactory("fila",configOverrides);factory=emf;}depoisfaçochamoaconsultanormal[code]publicListconsultarUsuario(Stringlogin){EntityManagerentityManager=factory.createEntityManager();entityManager.getTransaction().begin();Stringsql="from Usuario where loginUsuario = '"+login.trim()+"' and exclusao is false and situaUsuario = 'A'";Listlist=(List)entityManager.createQuery(sql).getResultList();entityManager.close();factory.close();booleantesteEntityManager=entityManager.isOpen();booleantesteFactory=factory.isOpen();returnlist;}
[/code]
batista.gerson
Putz nada certo, problema sem ser resolvido, alguem mais tem outra ideia, criar um pool de conexao sera que resolve o problema?? e outra como criar um pool de conexao com JPA?