3
respostas

Aplicação não consegue conectar no banco


Editado - Consegui fazer funcionar com as alterações:

  1. Liberando security group do RDS
  2. adicionando export no setenv.sh
  3. alterando o codigo no git da classe JpaConfigurator.java DE: dataSource.setUrl("jdbc:mysql://" + url + "/alura_aws"); PARA: dataSource.setUrl("jdbc:mysql://" + url + "/loja_alura_aws");

Consegui realizar o deploy na maquina de produção, mas estou tomando erro na hora de inicializar o site no tomcat de produção.

Verifiquei a aula de criação do RDS, todos os nomes estão conforme mostrado, criei o arquivo de configuração setenv.sh, liberei o security group do RDS.

Percebi que no código está hard-coded o nome do BD como alura_aws, apesar de criarmos no RDS como loja_alura_aws, mesmo com essas alterações não consegui acessar

Pelo client do MySql eu consigo acessar o banco através da máquina de produção

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1771) at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:64) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:166) at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:380) ... 69 more Caused by: org.hibernate.exception.JDBCConnectionException: Could not open connection at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:235) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162) at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435) at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:61)

3 respostas

Para mim mesmo seguindo esses passos não funcionou... fiz a alteração no código, liberei as portas, coloquei export nas variáveis.. mas nada, continua dando erro... estou quase desistindo desse curso...

Eu sconsigo conectar da máquina de produção direto no RDS AWS via comando: mysql -u root -h endereco.rds.aws -p Mas a aplicação não consegue conectar no RDS.

Alguém aí tem mais outra sugestão?

Mensagem de erro:

01-Jul-2020 02:46:10.067 SEVERE [http-nio-8080-exec-10] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'criadorDeProdutos': Invocation of init method failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection .... Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:431)

.... Caused by: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

Tambem estou com problemas com o banco e a aplicação. Muito ruim isso

Olá Pessoal, tudo bem com vocês? Peço desculpas pela demora no retorno!

Vocês estão no caminho certo, só falta algumas coisas:

  • Ir novamente em "Ações de pós-build" (Post-build Actions) , na parte de Credentials clique em Add e depois em Jenkins, como na imagem abaixo: Add Credentials

  • Coloque os campos da seguinte forma:

    • Username: jenkins
    • Password: jenkins
    • ID: jenkins
    • Description: jenkins
  • Por fim, clique no botão Add, como na imagem abaixo: Save Credential

  • E novamente no campo de Credentials selecione a nova crendencial que acabamos de criar jenkins e salve o Job novamente, como na imagem: Select Credential
  • Conecte-se a máquina EC2 via SSH, entre no banco de dados com o comando (instale o mysql-client antes e também o RDS e o EC2 precisam estar no mesmo VPC):

    mysql -u root -h endpoint_do_banco_de_dados -p

    E agora informe a senha.

  • E depois crie o banco de dados "alura_aws", para isso você precisa executar o comando para criar o banco de dados:

    CREATE DATABASE alura_aws;
  • Agora crie saia do MySQL e entre no arquivo setenv.sh com o comando:

    sudo nano /usr/share/tomcat8/bin/setenv.sh
  • Altere o arquivo colocando a porta do MySQL (3306) e também coloque a palavra reservada export antes de todas as variaveis, então o arquivo deve ficar da seguinte forma:

    export url=endpoint_do_banco_de_dados:3306
    export usuario=root
    export senha=12345678

E deve funcionar corretamente seu build, caso ainda persista o erro, então entre na pasta /var/lib/tomcat8/webapps com o comando:

cd /var/lib/tomcat8/webapps

E exclua o arquivo "alura-aws.war" e a pasta "alura-aws/" com os comandos:

sudo rm  alura-aws.war

E depois:

sudo rm -r  alura-aws

E tente fazer o build novamente.

Qualquer coisa é só falar!