1
resposta

Conexão Banco Dados em Servlet’s Java

Fala galera, eu estou fazendo o curso de Servlet’s da Alura e estou tentando usar um Banco de Dados MySQL na aplicação que é ensinada no curso(CRUD de empresas), porém estou com um problema na hora da execução. Essa é a seguinte pilha de erros:

out. 11, 2020 4:15:28 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [br.com.alura.servlet.ListaEmpresaServlet] in context with path [/sistema] threw exception [Servlet execution threw an exception] with root cause java.lang.ClassNotFoundException: com.mchange.v2.c3p0.ComboPooledDataSource ** at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)** ** at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)** ** at br.com.alura.factory.ConnectionFactory.(ConnectionFactory.java:15)** ** at br.com.alura.servlet.ListaEmpresaServlet.doGet(ListaEmpresaServlet.java:29)** ** at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)** ** at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)** ** at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)** ** at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)** ** at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)** ** at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)** ** at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)** ** at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)** ** at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)** ** at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)** ** at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)** ** at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)** ** at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)** ** at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)** ** at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)** ** at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)** ** at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)** ** at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)** ** at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)** ** at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)** ** at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)** ** at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)** ** at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)** ** at java.base/java.lang.Thread.run(Thread.java:832)**

Vou postar a minha classe ConnectionFactory aqui:

package br.com.alura.factory;

import java.sql.Connection; import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ConnectionFactory implements AutoCloseable{

public DataSource dataSource;

public ConnectionFactory() { ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setJdbcUrl("jdbc:mysql://localhost/banco_empresa?useTimezone=true&serverTimezone=UTC"); cpds.setUser("root"); cpds.setPassword("root");

this.dataSource = cpds;

}

public Connection getConexao() throws SQLException { return this.dataSource.getConnection(); }

@Override public void close() throws Exception {

}}

Eu segui todo o passo a passo e toda a ideia de execução do curso de JDBC da Alura, porém acontece esse erro mesmo eu tendo colocado os drivers do BD na pasta do projeto. É minha primeira vez que estou tentando conectar um BD a uma aplicação Java que não seja a do curso de JDBC. Não sei se antes de eu conectar o BD eu tenha que fazer uma configuração em algum lugar para a aplicação conseguir funcionar com o BD. Ainda sou iniciante na programação rsrrs, então desculpem caso eu tenha feita uma grave ignorância.

1 resposta

Olá, Lucas, tudo bem?

Peço desculpas pela demora no retorno a sua mensagem.

É normal ter dificuldades ao aprendermos algo novo e estamos aqui para te ajudar!

Pelo erro apresentado, parece que o problema está relacionado à falta da biblioteca com.mchange.v2.c3p0.ComboPooledDataSource. Verifique se você adicionou corretamente essa biblioteca ao seu projeto. Certifique-se de que o arquivo "JAR" correspondente esteja presente na pasta de dependências do seu projeto. Além disso, é importante garantir que a biblioteca esteja sendo carregada corretamente pelo classloader do Tomcat. Verifique se você colocou o arquivo "JAR" no local adequado dentro da estrutura do seu projeto.

Outra possível causa desse erro é a falta de configuração do pool de conexões no arquivo web.xml. Certifique-se de que você configurou corretamente o pool de conexões e o datasource no arquivo de configuração do seu projeto.

Por fim, lembre-se de reiniciar o servidor Tomcat após fazer qualquer alteração no projeto, para garantir que as modificações sejam aplicadas corretamente.

Espero que essas dicas te ajudem a resolver o problema. Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software