JPA - too many clients already  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

Oi pessoal!

Estou utilizando o JPA e alguma vezes estou recebendo o seguinte erro:

Exception in thread "Thread-0" Local Exception Stack:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.4 (Build 060412)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyError Code: 0



Para criar o ManagerFactory estou fazendo assim




E nos metodos onde acesso o banco crio o EntityManager e dou close, olha um exemplo



O que esta errado????
O que esta faltando????

Obrigada!

danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Você não deveria usar o EntityManager via Injection? E deixar o container gerenciar a vida do EM para você?

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

E como eu faço isso???????
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline


gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

Vc diz fazer isso??????




Mas e o EntityManagerFactory ????

Obrigada!
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

Se tu estiver usando spring framework 2.0, isto funciona perfeitamente ...
Caso contrario, só é possivel injetar um entity manager factory em um Session Bean ou então em um Servlet ...

ynaue wrote:Vc diz fazer isso??????




Mas e o EntityManagerFactory ????

Obrigada!

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

Ai SOOOCCCOOORRROOOOO !!!!!!!

O Projeto não esta usando Spring.

Na verdade me pediram para cuidar apenas dessa parte de acesso ao BD.
Então fiz o mapeamento das tabelas (classes com gets e sets), o perisitence.xml, e as classes que chamei de DAO onde adiciono, atualizo e removo os dados.

Como mostrado na minha primeira mensagem estava fazendo a conexão daquele jeito (que deve estar errado)

E realmente essa ultima ideia não deu certo.
E agora?????

Ahh!! Estou usando o TopLink
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

E, se não me engano, você não precisa chamar o método close() num ambiente gerenciado (dentro do container JEE).

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

Voce esta abrindo muitas EMFs!!!!! Tudo bem que esta fechando direito o EM, mas o EMF voce esta abrindo demais, ele pode estar criando um pool para cada EMF, nao sei como o toplink gerencia isso!

Faca o seguinte, devolve sempre a mesma EMF pelo seu JPAConexao, a la singleton. Mais para frente mude isso para injecao de dependencias.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

Paulo Silveira wrote:Voce esta abrindo muitas EMFs!!!!! Tudo bem que esta fechando direito o EM, mas o EMF voce esta abrindo demais, ele pode estar criando um pool para cada EMF, nao sei como o toplink gerencia isso!

Faca o seguinte, devolve sempre a mesma EMF pelo seu JPAConexao, a la singleton. Mais para frente mude isso para injecao de dependencias.


Mas ja não é isso que estou fazendo aqui (singleton)????


Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

verdade, ja esta fazendo!

mande a stacktrace.... e verifique o erro que o PG ta reclamando!

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

HELP!!!

Demorou para apareceu de novo!!! O erro é esse:


HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.



exception

org.apache.jasper.JasperException:
Internal Exception: org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyError Code: 0
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)




root cause

Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.4 (Build 060412)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyError Code: 0
oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:289)
oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:84)
oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:167)
oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:537)
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:193)
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:129)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
pacotes.persistencias.connector.JPAConexao.getFactory(JPAConexao.java:30)
pacotes.persistencias.DAO.MenuDAO.atualizar(ItensMenuDAO.java:105)
org.apache.jsp.index_005fitensMenu_jsp._jspService(index_005fMenu_jsp.java:106)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)




note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.






ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

E esse é o que parece no Log no netbeans:

Local Exception Stack:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.4 (Build 060412)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyError Code: 0
at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:289)
at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:84)
at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:167)
at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:537)
at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:193)
at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:129)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
at pacotes.persistencias.connector.JPAConexao.getFactory(JPAConexao.java:30)
at pacotes.persistencias.DAO.MenuDAO.atualizar(MenuDAO.java:105)
at org.apache.jsp.index_005fMenu_jsp._jspService(index_005fMenu_jsp.java:106)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:443)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:98)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:382)
at org.postgresql.Driver.connect(Driver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:82)
... 32 more
Ale2006
Thread.start()

Membro desde: 29/03/2006 21:49:05
Mensagens: 33
Offline

Estou com um problema parecido...vc conseguiu resolver???
Se conseguiu, pode me mostrar a solução?
Obrigado...

Jesus é o Caminho, a Verdade e a Vida!
ynaue
Debugger
[Avatar]

Membro desde: 29/05/2006 14:14:24
Mensagens: 62
Offline

Ainda não consegui não....

Vc tb esta usando Postgres????

E qdo vc insere dados em uma tabela com relacionamento e Sequence esse dado consegue ser listado logo em seguida?????
Pq estou com esse problema tb.

 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team