GARANTIR DESCONTO

Fórum [RESOLVIDO] Erro de conexão em servidor web #567460

23/01/2013

0

Olá! É a primeira vez que eu coloco um site no ar, e estou tendo problemas em conectar com o banco de dados. Eu uso Unidades de Persistência para conectar, mas não sei se é possível usá-las em um servidor web. Bem, o código da Unidade de Persistência é:
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="UP" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>entidades.Produto</class>
    <class>entidades.Usuario</class>
    <class>entidades.Categoria</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://www.urlDaAplicacao.com.br:3600/bancoDeDados?zeroDateTimeBehavior=convertToNull"/>
      <property name="javax.persistence.jdbc.password" value="senha"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>
E o erro ao executar é o seguinte: 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 Agradeço desde já! (:
Mariana Casarin

Mariana Casarin

Responder

Posts

24/01/2013

Davi Costa

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
Responder

Gostei + 0

24/01/2013

Davi Costa

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!
Responder

Gostei + 0

24/01/2013

Davi Costa

Posta o erro inteiro pode ser que a comunidade possa te ajudar melhor abcs
Responder

Gostei + 0

24/01/2013

Davi Costa

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.
Responder

Gostei + 0

24/01/2013

Davi Costa

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
Responder

Gostei + 0

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/
Responder

Gostei + 0

24/01/2013

Davi Costa

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! (:
Responder

Gostei + 0

25/01/2013

Davi Costa

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
Responder

Gostei + 0

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
Responder

Gostei + 0

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.
Responder

Gostei + 0

25/01/2013

Davi Costa

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!
Responder

Gostei + 0

25/01/2013

Davi Costa

Henrique, não sei se entendi exatamente o que você quis dizer, mas vou dar uma pesquisada no assunto. Muito obrigada!
Responder

Gostei + 0

25/01/2013

Davi Costa

Você chegou a testar esses procedimentos? http://jelastic.com/pt/docs/connection-to-mysql
Responder

Gostei + 0

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
Responder

Gostei + 0

25/01/2013

Davi Costa

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...)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar