Não consigo usar o getConnection para acessar o mysql

Boa tarde

Estou tentando conectar numa base mysql através do DriverManager.getConnection e não estou conseguindo.

Criei um projeto no Eclipse, fazendo uso do java e da opção de um projeto web - Dynamic Web Project. Após várias tentativas, utilizando o DriverManager.getConnection(url, usuario, senha) e debugando o projeto, percebi que ao rodar a aplicação pelo Rum on Server ou mesmo Debug on Server, ambos causam erro por não encontrar o Driver do mysql, porém se eu rodo a aplicação como desktop como uma Java Application a mesma reconhece o Driver e faz a conexão normalmente.

Alguém já passou por este conflito? tem algo que possa fazer para testar?

segue abaixo a classe de conexao:

package br.com.util;

import java.sql.*;

public class MySqlConnection {
	
	private static final String url = "jdbc:mysql://localhost:3306/dbfinanceiro";
	private static final String user = "root";
	private static final String psw = "1234";
	
	public Connection getConnection() {
		
		Connection conn = null;
		
		try {
			 conn = DriverManager.getConnection(url, user, psw);
			System.out.println("Driver MYSQL Conectado com Sucesso!");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return conn;
	}
}

desde já agradeço
pedrom

Dá alguma exception?

sim… Lucas…

NFORMAÇÕES: Server startup in [900] milliseconds
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbfinanceiro
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at br.com.util.MySqlConnection.getConnection(MySqlConnection.java:16)
at br.com.dao.UsuarioDao.validar(UsuarioDao.java:26)
at br.com.controller.Validarlogin.doPost(Validarlogin.java:34)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:709)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:792)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
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:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1762)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)

porém, se eu rodo esta mesma classe com uma appication java ele conecta normalmente.

Está faltando a dependência do MySql no seu projeto Web

me explica ai como adicionar esta dependência… pq já coloquei a biblioteca na pasta do projeto… botão direito e adicionar o build path mysql-connector-j-8.0.32.jar.

Segundo… quando rodo o projeto como uma aplicação ele passa pelo getConnection e conecta o banco.
Apenas quando rodo esta mesma aplicação como projeto web é que o mesmo dá erro.

preciso adicionar esta biblioteca ao path do windows tb? pelo que li só ao projeto em questão! é isso??

desde já agradeço sua ajuda e a do Lucas

Como você está fazendo para executar a aplicação Web?

criei o arquivo index.jsp as classes dao e beans e chamo esta conexão… ai clico botão direito run on server em cima do nome do projeto e executo…

como estava debugando pra ajudar a entender onde estava o erro foi que vi q quando chego nesta linha do DriverManager.getConnection foi q vi que dava erro… porém se executo como run as java application ele passa e conecta.

deu pra entender?
há como por imagem aqui… pq se quiser eu posto a imagem

E o server está configurado com as mesmas dependências da Java Application?
Chegou a conferir se os jars estão no WEB-INF/lib quando o server está executando?

Não… esta pasta lib está vazia…
Quais arquivos devo por lá?
o de conexão??

Todos os JARs que sua aplicação depende, por exemplo o mysql-connector-j-8.0.32.jar.

Em princípio você consegue configurar isso no próprio eclipse.
Se clicar duas vezes no seu server, vai abrir a página de Overview, lá tem um link “Open launch configuration” onde você configura o classpath do server.

posso arrastar a biblioteca e soltar lá? ou melhor copiar??
outra coisa… devo alterar o caminho lá do build path para este endereço dentro desta pasta lib??

Não, se seu server estiver configurado direito na IDE, quando você publicar sua aplicação, a própria IDE deve copiar os JARs lá

Pode

vou testar agora

Nada, amigo!!
arrastei a pasta e nada!!
Informei o novo path e tb não deu resultado.

há algum problema quando há a mensagem q o projetoj is required and cannot be removed from the server que impacte nesta ação?

mesmo erro:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbfinanceiro
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at br.com.util.MySqlConnection.getConnection(MySqlConnection.java:16)
at br.com.dao.UsuarioDao.validar(UsuarioDao.java:26)
at br.com.controller.Validarlogin.doPost(Validarlogin.java:34)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:709)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:792)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
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:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1762)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)

o que posso tentar mais?? Há outra forma de conectar com este banco?

Qual é o servidor que você está usando?

Mysql Workbench 8.0 CE

acabei de fazer a conexão wizard pelo netbeans, mesma biblioteca (mysql connector J) q baixei e funcionou tb…

vou copiar agora mesmo código para o netbeans para ver se vai rodar

Não conheço, dá uma olhada na documentação dele de como você configura o classpath das web applications.

Staroski… me da uma ajuda aki…
vi que podia criar uma conexão pela janela de perspectiva… selecionei o database development e consegui colocar o banco a a senha e a conexão com o driver mysql-connect-j…ou seja… conexão normal…
Como poderia desenvolver a classe de conexão para chamar essa conexão?? você saberia??

Então pelo jeito você tem um pool de conexões.
Deve conseguir o objeto Connection usando o jndi name de sua conexão.
O código seria mais ou menos assim:

String jndiName = "java:comp/env/jdbc/MySQLDB"; // tem que ver como é o nome da sua conexão
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(jndiName);
Connection conn = ds.getConnection(); // agora você tem sua Connection