Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Onde estou errando?

Olá. Estou tentando acessar minha aplicação em Spring pelo EC2 a primeira vez que tentei e só aparecia parte da aplicação e quando ia fazer o login estourava o erro:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

minha aplicação tinha as seguintes informações:

jdbc.user = root
jdbc.pass = root
jdbc.url = jdbc:mysql://localhost:3306/contas

depois de configurar e alterar os dados para :

jdbc.user = root
jdbc.pass = ******
jdbc.url = jdbc:mysql://mysql-clipboard.cseewscw4mmo.us-east-1.rds.amazonaws.com:3306/contas

não consigo mais acessar a aplicação e nada aparece e continua o mesmo erro, onde estou errando nesse caso?

11 respostas

Oi Clerman, o hibernate quando sobe tenta acessar o banco de dados e inferir as informações necessárias para a execução da aplicação.. descobrir qual dialeto ele deve aplicar por exmeplo...

A exception que ele soltando é justamente relacionada a isso.. ele ta tentando acessar o banco e não está conseguindo. Pega esses dados de acesso que você ta testando e cria uma aplicação com main básica para acessar ele.. só para ver se funciona de boa.

solução!

Olá Alberto criei a classe para testar a conexão com a base de dados:

package br.com.clipboard.financeiro.web.controller;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class ClasseTeste {

    public static void main(String[] args) {

        String sql;

        String user = "root";
        String passwd = "********";

        String url = "jdbc:mysql://mysql-clipboard.cseewscw4mmo.us-east-1.rds.amazonaws.com:3306/contas";

        try {
            Connection con = DriverManager.getConnection(url, user, passwd);

            Statement stmt = con.createStatement();
             sql = "CREATE TABLE `Demo` ("
                        + "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,"
                        + "`titulo` VARCHAR(80) NOT NULL,"
                        + "`ano` INT UNSIGNED,"
                        + "`diretor` VARCHAR(80),"
                        + "PRIMARY KEY (`id`))"
                        + "CHARACTER SET utf8";
             stmt.executeUpdate(sql);

             System.out.println(sql);
             System.out.println("Conesão estabelecida com sucesso!");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

ao efetuar o run pela primeira vez me retorna:

CREATE TABLE Demo (id INT UNSIGNED NOT NULL AUTO_INCREMENT,titulo VARCHAR(80) NOT NULL,ano INT UNSIGNED,diretor VARCHAR(80),PRIMARY KEY (id))CHARACTER SET utf8 Conesão estabelecida com sucesso!

na segunda:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'Demo' already exists    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)    at java.lang.reflect.Constructor.newInstance(Unknown Source)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
    at com.mysql.jdbc.Util.getInstance(Util.java:372)    at om.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2531)    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1618)    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)    at br.com.clipboard.financeiro.web.controller.ClasseTeste.main(ClasseTeste.java:30)

Deixando a evidência clara que houve a conexão e a criação de uma tabela. Agora pela aplicação, quando tento acessar via navegador não retorna erro mas a mensagem: A conexão expirou! E o erro pelo console do prompt via comando como pode ver na abertura do tópico!

é porque na segunda você ta pedindo para criar a tabela de novo :).

claro! Vc pode me dar uma luz nessa situação?

Em relação a aplicação no heroku, você precisa olhar mais os logs para ver o real motivo da falha de conexão... a informação deve estar lá. Pelo menos é o que eu faria :).

Não é o no Heroku, é no Amazon o erro no console é esse:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

Por vezes eu consigo acessar a base de dados por linha de comando por outras vezes não!

Alberto no meu caso, se fosse deixar a minha aplicação para usar variáveis de ambiente como as usadas no exemplo do curso Amazon EC2 - loja .war, como posso criar essas variáveis de ambiente na minha aplicação conforme as configs que enviei acima, para que fique mais parecida com o exemplo e aumente a probabilidade de acertos !

Não sei qual o tipo de aplicação apresentada no curso, mas se for usando springboot, acho que você pode usar a sintaxe do ${var} para acessar variáveis disponíveis no ambiente. Mesmo sendo na amazon, você ainda não postou aqui a exception completa.. você está postando apenas a mensagem de erro.

30-Aug-2017 00:03:15.079 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log 2 Spring WebApplicationInitializers detected on classpath 30-Aug-2017 00:03:15.295 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Initializing Spring root WebApplicationContext 30-Aug-2017 00:03:24.001 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Initializing Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:08:48.564 INFO [localhost-startStop-3] org.apache.catalina.core.A pplicationContext.log Destroying Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:08:48.594 INFO [localhost-startStop-3] org.apache.catalina.core.A pplicationContext.log Closing Spring root WebApplicationContext 30-Aug-2017 00:08:54.909 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log 2 Spring WebApplicationInitializers detected on classpath 30-Aug-2017 00:08:55.219 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring root WebApplicationContext 30-Aug-2017 00:09:05.707 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:14:36.552 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Destroying Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:14:36.584 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Closing Spring root WebApplicationContext 30-Aug-2017 00:16:00.742 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log 2 Spring WebApplicationInitializers detected on classpath 30-Aug-2017 00:16:01.055 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring root WebApplicationContext

30-Aug-2017 00:14:36.584 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Closing Spring root WebApplicationContext 30-Aug-2017 00:16:00.742 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log 2 Spring WebApplicationInitializers detected on classpath 30-Aug-2017 00:16:01.055 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring root WebApplicationContext 30-Aug-2017 00:16:12.044 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:20:51.716 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Destroying Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:20:51.756 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Closing Spring root WebApplicationContext 30-Aug-2017 00:21:08.811 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log 2 Spring WebApplicationInitializers detected on classpath 30-Aug-2017 00:21:09.275 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring root WebApplicationContext 30-Aug-2017 00:21:20.592 INFO [localhost-startStop-1] org.apache.catalina.core.A pplicationContext.log Initializing Spring FrameworkServlet 'dispacher' 30-Aug-2017 00:40:06.794 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log 2 Spring WebApplicationInitializers detected on classpath 30-Aug-2017 00:40:07.042 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Initializing Spring root WebApplicationContext 30-Aug-2017 00:40:16.169 INFO [localhost-startStop-2] org.apache.catalina.core.A pplicationContext.log Initializing Spring FrameworkServlet 'dispacher'

Esse erro ocorre quando tento fazer o login ou tento criar um novo usuário...