Estou fazendo um curso online, fiz tudo o que o instrutor fez e no final a aplicação não quer subir. O erro que retorna é esse.
Perdi a tarde toda e até agora nada.
Caused by: java.lang.RuntimeException: Erro ao Conectar com o banco de dados
por acaso está fechando a conexão com o filtro?
o que realmente está fazendo neste momento na sua aplicação?
mande o código do que foi feito.
Cleiton_Conceicao
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><formaction="LoginServlet"method="post">
Login:
<inputtype="text"id="login"name="login"><br/>
Senha:
<inputtype="text"id="senha"name="senha"><br/><inputtype="submit"value="logar"></form></body></html>
Acredito que esteja fechando sua conexão e não esteja abrindo novamente, considerando que você fez uma classe singleton, meu palpite é:
quando você inicia o servidor você ganha conexão com o método init do servlet
quando você usa o filter você não está abrindo nenhuma conexão
quando você da um commit você fecha a conexão.
Sendo assim, faz uma coisa para confirmar, antes da linha arg2.doFilter(arg0, arg1);
de um SingleConnection.getConnection(); para ele abrir uma conexão quando houver uma requisição para ver se da certo.
packageconnection;importjava.sql.Connection;importjava.sql.DriverManager;//Responsável por fazer a conexão com o banco de dadospublicclassSingleConnection{privatestaticStringbanco="jdbc:postgresql://localhost:5432/CONSULTORIO?autoReconnect=true";//private static String password;privatestaticStringuser="postgres";privatestaticConnectionconnection=null;static{conectar();}publicSingleConnection(){conectar();}privatestaticvoidconectar(){try{if(connection==null)// se for null faz a conexao se não retornar a conexao que já existe{Class.forName("org.postgresql.Driver");connection=DriverManager.getConnection(banco,user,"");connection.setAutoCommit(false);// Não permitir commitar automaticamente}{}}catch(Exceptione){thrownewRuntimeException("Erro ao Conectar com o banco de dados");}}publicstaticConnectiongetConnection(){returnconnection;}}
jonathan.sky
o seu erro deve está acontecendo nesta chamada, static, mas pode ser que venha antes, pois a exceção não foi tratada de maneira correta.
try{if(connection==null)// se for null faz a conexao se não retornar a conexao que já existe{Class.forName("org.postgresql.Driver");connection=DriverManager.getConnection(banco,user,"");connection.setAutoCommit(false);// Não permitir commitar automaticamente}{}}catch(Exceptione){thrownewRuntimeException("Erro ao Conectar com o banco de dados");/*você está ocultando o tipo do erro, coloque a exception da maneira informada a baixo.*/catch(Exceptione){thrownewRuntimeException("Erro ao Conectar com o banco de dados"+e);}
e manda o log novamente se houver.
obs: você me fez da uma boa lida neste problema em rapaz kkk.
Cleiton_Conceicao
vou dar uma lida. obrigado.
Cleiton_Conceicao
Continuou a mesma coisa, mudei a conexão do banco para SQL Server, segue novo código.
packageconnection;importjava.sql.Connection;importjava.sql.DriverManager;//Responsável por fazer a conexão com o banco de dadospublicclassSingleConnection{privatestaticStringbanco="jdbc:sqlserver://localhost:1433/CONSULTORIO?autoReconnect=true";privatestaticStringpassword="32313099";privatestaticStringuser="sa";privatestaticConnectionconnection=null;static{conectar();}publicSingleConnection(){conectar();}privatestaticvoidconectar(){try{if(connection==null)// se for null faz a conexao se não retornar a conexao que já existe{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");connection=DriverManager.getConnection(banco,user,password);connection.setAutoCommit(false);// Não permitir commitar automaticamente}{}}catch(Exceptione){thrownewRuntimeException("Erro ao Conectar com o banco de dados"+e);}}publicstaticConnectiongetConnection(){returnconnection;}}
mai 24, 2017 11:48:24 PM org.apache.catalina.core.StandardContext startInternal
GRAVE: One or more Filters failed to start. Full details will be found in the appropriate container log file
mai 24, 2017 11:48:24 PM org.apache.catalina.core.StandardContext startInternal
GRAVE: Context [/ProjetoFinal] startup failed due to previous errors
mai 24, 2017 11:48:24 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deploying web application directory C:\apache-tomcat-8.0.32\webapps\docs
mai 24, 2017 11:48:24 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deployment of web application directory C:\apache-tomcat-8.0.32\webapps\docs has finished in 65 ms
mai 24, 2017 11:48:24 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deploying web application directory C:\apache-tomcat-8.0.32\webapps\examples
mai 24, 2017 11:48:24 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: ContextListener: contextInitialized()
mai 24, 2017 11:48:24 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: SessionListener: contextInitialized()
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deployment of web application directory C:\apache-tomcat-8.0.32\webapps\examples has finished in 716 ms
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deploying web application directory C:\apache-tomcat-8.0.32\webapps\host-manager
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deployment of web application directory C:\apache-tomcat-8.0.32\webapps\host-manager has finished in 58 ms
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deploying web application directory C:\apache-tomcat-8.0.32\webapps\manager
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deployment of web application directory C:\apache-tomcat-8.0.32\webapps\manager has finished in 57 ms
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deploying web application directory C:\apache-tomcat-8.0.32\webapps\ROOT
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFORMAÇÕES: Deployment of web application directory C:\apache-tomcat-8.0.32\webapps\ROOT has finished in 45 ms
mai 24, 2017 11:48:25 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler [“http-nio-8080”]
mai 24, 2017 11:48:25 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler [“ajp-nio-8009”]
mai 24, 2017 11:48:25 PM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 2095 ms
jonathan.sky
Agora aparece o erro, por falta do drive não conseguiu conectar, volta para o mysql até ter arrumado. Possivelmente também deve ser o mesmo erro xD. Se quiser continuar com SQLServer, terá que implementar o driver na lib.
Caused by: java.lang.RuntimeException: Erro ao Conectar com o banco de dadosjava.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
quando o filtro é iniciado ele tenta abrir a conexão e não vai conseguir por conta do erro acima.
GRAVE: Exception starting filter filter.Filter
java.lang.NoClassDefFoundError: Could not initialize class connection.SingleConnection
você está colocando todos os jars na sua WEB-INF/lib correto? caso tenha mais de uma aplicação rodando juntas, ele pode dar erro de versão e não encontrar o driver correto.