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

Aula 2 - HTTP Status 404 e inconsistências de código

Segui o passo-a-passo da aula, importei o projeto-jpa-2 (corrigi o erro do método getProdutos da classe ProdutoDao que não tinha o @Transactional como citado por outros tópicos), mas ainda tenho erro 404 para abrir a página. Seguem alguns trechos de erros ao rodar o Tomcat (versão 9.0.34):

[main] WARN org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getEntityManagerFactory' defined in class path resource [br/com/caelum/JpaConfigurator.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
[main] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getEntityManagerFactory' defined in class path resource [br/com/caelum/JpaConfigurator.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution

...

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution

...

Caused by: org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution

...

Caused by: java.sql.SQLException: The server time zone value 'Hora oficial do Brasil' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

...

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Hora oficial do Brasil' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

...

abr 20, 2020 8:50:05 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exceção ao enviar evento de contexto iniciado para instância listener da classe [org.springframework.web.context.ContextLoaderListener]

...

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution

...

Caused by: org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution

...

Caused by: java.sql.SQLException: The server time zone value 'Hora oficial do Brasil' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

...

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Hora oficial do Brasil' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Parece ser um problema com questão de configuração de fuso horário do servidor. Por favor, como posso corrigir isso?

Além disso, no vídeo da aula o código da classe JpaConfigurator tem itens que não existem no código do arquivo do download - no método getDataSource tem linhas de setPoolSize e setNumHelperThreads, existe um método statistics e no método getEntityManagerFactory há 7 linhas de props.setProperty (no código do download há apenas 3 linhas deste tipo). Estes são os erros que encontrei até o momento.

Por que este tipo de problema está ocorrendo?

O curso precisa de reformulação para acabar com estes erros primários de didática. Isto prejudica demais no aprendizado e faz com que a gente atrase desnecessariamente no avanço do aprendizado.

2 respostas
solução!

Olá Rafael, tudo bem com você?

Para corrigir esse problema com o banco de dados vamos adicionar algumas configurações a mais no getDataSource() dentro de JpaConfigurator:

Vamos alterar essa linha:

dataSource.setUrl("jdbc:mysql://localhost/projeto_jpa");

Para:

dataSource.setUrl("jdbc:mysql://localhost/projeto_jpa?useTimezone=true&serverTimezone=UTC");

Dessa forma além de definir qual database iremos utilizar estamos passando também as configurações de horário a ser utilizado

Em relação a esses problemas do curso, (de ter conteúdo no código do instrutor que não está presente nos arquivos de download, ou citado pelo instrutor) estarei também pedindo para haver uma reformulação e correções

Peço perdão, e concordo plenamente que isso atrapalha bastante o desenvolvimento!

Abraços e Bons Estudos!

Geovani,

Boa noite. O problema foi resolvido com a informação que você me passou. Agradeço pela ajuda.

Att.

Rafael