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;
}
}
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.
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??
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?
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??
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)
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