Posts
O servidor que está aplicação não é o mesmo do banco?
Pq se for de repente vc pode até usar localhost mesmo no endereço...
mas vamos por partes explica melhor seu cenário. Onde está hospedando o site e por ai vai...
abcs
Davi, estão no mesmo servidor sim!
Eu uso o servidor brasileiro do Jelastic, o websolute. Ele dá suporte para várias versões do Java e do Mysql.
Já tentei usar como localhost e não funcionou também, deu o mesmo problema.
Eu preciso fazer o upload do jdbc ou coisa assim? Dá pra usar as unidades de persistência fora do netbeans?
Obrigada por responder!
Posta o erro inteiro pode ser que a comunidade possa te ajudar melhor
abcs
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Error Code: 0
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:517)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
dao.Dao.<init>(Dao.java:17)
controle.LoginServlet.doPost(LoginServlet.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Error Code: 0
org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
dao.Dao.<init>(Dao.java:17)
controle.LoginServlet.doPost(LoginServlet.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:525)
com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:525)
com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
java.sql.DriverManager.getConnection(DriverManager.java:579)
java.sql.DriverManager.getConnection(DriverManager.java:190)
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
dao.Dao.<init>(Dao.java:17)
controle.LoginServlet.doPost(LoginServlet.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.net.ConnectException: Connection refused
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
java.net.Socket.connect(Socket.java:579)
java.net.Socket.connect(Socket.java:528)
java.net.Socket.<init>(Socket.java:425)
java.net.Socket.<init>(Socket.java:241)
com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:525)
com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
java.sql.DriverManager.getConnection(DriverManager.java:579)
java.sql.DriverManager.getConnection(DriverManager.java:190)
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
dao.Dao.<init>(Dao.java:17)
controle.LoginServlet.doPost(LoginServlet.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
Pelo erro ele cita algo no driver mesmo, vc tem o driver na pasta lib da sua aplicação e no seu build-path?
Uma outra solução tb pode ser colocar nas libs do seu servidor
abcs
24/01/2013
Marcelo Senaga
Por causa desse erro:
java.net.ConnectException: Connection refused
Também pode ser:
- javax.persistence.jdbc.url pode estar errado
- Banco de dados não aceita conexões TCP/IP (Vejo que é o Mysql, então você tem que dar aqueles comandos GRANT para registrar o usuário/máquina que podem acessar o BD).
Tentou usar algum aplicativo, tipo SQuirrel ou outro, para acessar seu banco de dados? Faça um teste de conexão com alguma ferramenta de banco de dados que você conheça.
O Squirrel permite que você configure o Driver JDBC e as strings de conexão. É ótimo para você testar se há conectividade. Ele é gratuito:
http://squirrel-sql.sourceforge.net/
Bom, de fato, não localizei o arquivo do driver... então fiz o upload na pasta lib e reiniciei o tomcat, mas não resolveu. O servidor é linux (se isso ajudar em alguma coisa).
Quanto a segunda questão que você colocou, Marcelo, eu vou testar! (:
Olá pessoal!
Então, eu fiz o que o Marcelo falou, mas não consegui conectar.
Quando eu tento, me retorna o seguinte erro:
Unexpected Error occurred attempting to open an SQL connection.
Pelo que andei olhando na internet, eu fiz tudo certinho, instalei o jdbc para mysql e configurei a url da conexão do jeito certo.
Bom, além disso, o meu suporte me passou um tutorial para criar um arquivo de conexão na pasta home do projeto, o que também não funcionou. O arquivo é o seguinte:
host=jdbc:mysql://mysql-nomeDoProjeto.jelastic.websolute.net.br/bancoDeDados
username=root
password=senha
driver=com.mysql.jdbc.Driver
25/01/2013
Marcelo Senaga
Estranho.
O serviço de banco de dados está mesmo no ar?
Não é problema de firewall?
Os drivers JDBC estão onde deveriam estar?
http://comments.gmane.org/gmane.comp.db.squirrel-sql.users/1770
25/01/2013
Henrique Andrade
Sabe uma coisa que acontece bastante? Conexão antiga.
O que rola: você armazena uma instância da sua conexão em algum ponto no seu sistema para poder usá-la mais tarde e esta fica inativa por umbom tempo.
Então, de repente, quando você quer usá-la novamente, topa com este tipo de erro. Verifique se não é isto que está contecendo. Uma excelente solução para este problema é você começar a adotar alguma ferramenta de pool, como por exemplo o C3P0 ou o Commons Pool da Apache. Neles você define o tempo de idle justamente para evitar a ocorrência deste problema.
Marcelo,
teoricamente está!
Eu desativei o firewall e tive o mesmo erro.
Já tinha visto o link que me mandou, o driver do JDBC foi instalado sim (tem o ícone de ticado azul ao lado).
Poxa, estou perdendo as esperanças, não sei mais o que fazer!
Henrique,
não sei se entendi exatamente o que você quis dizer, mas vou dar uma pesquisada no assunto. Muito obrigada!
Você chegou a testar esses procedimentos?
http://jelastic.com/pt/docs/connection-to-mysql
25/01/2013
Mariana Casarin
Testei sim, Marcelo. Até fiz o upload do arquivo que eles disponibilizam, para testar. Mas não foi criada a tabela no banco de dados
No Livro Programador Pragmático, tem um item interessante:
"select não está com defeito"
Antes de suspeitarmos de algum problema na Jelastic, é muito mais provável que o problema possa estar na aplicação. Para matar esse dúvida:
Suba o Mysql na sua máquina de desenvolvimento e a sua aplicação também. E tente fazer a conexão mudando os parâmetros da unidade de persistência. Se mesmo assim falhar, aí o problema é na sua aplicação.
E como é Mysql, e você vai ter que subir na sua máquina, não esquema dos GRANT´s. (se for conectar com usuário root, acho que acessa direto, não lembro...)