Eclipse - Problema para subir aplicação

11 respostas
programação
C

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.

GRAVE: Exception starting filter filter.Filter

java.lang.ExceptionInInitializerError

at filter.Filter.init(Filter.java:46)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)

at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:105)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4659)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5281)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)

at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:585)

at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1794)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.RuntimeException: Erro ao Conectar com o banco de dados

at connection.SingleConnection.conectar(SingleConnection.java:43)

at connection.SingleConnection.(SingleConnection.java:19)

 17 more

11 Respostas

J

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.

C
<%@ page language="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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>

<body>
<form action="LoginServlet" method="post">
Login:
<input type="text" id="login" name="login">
<br/>
Senha:
<input type="text" id="senha" name="senha">
<br/>
<input type="submit" value="logar">
</form>

</body>
</html>

package filter;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

import connection.SingleConnection;
@WebFilter(urlPatterns={"/*"})
public class Filter implements javax.servlet.Filter {
	private static Connection connection;

	@Override
	public void destroy() {
		
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		try{
			
			arg2.doFilter(arg0, arg1);
			connection.commit();
		}catch(Exception e){
			try {
				connection.rollback();
			} catch (SQLException e1) {
			
				e1.printStackTrace();
			}
			
			
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		SingleConnection.getConnection();
		
	}

}

package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import beans.Loginesenha;
import dao.DaoLogin;



@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private DaoLogin daoLogin = new DaoLogin();


    public LoginServlet() {
        super();
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doPost(request,response);
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try{
		Loginesenha loginesenha = new Loginesenha();
		String login = request.getParameter("login");
		String senha = request.getParameter("senha");

		if(daoLogin.validarlogin(login, senha)){
			RequestDispatcher dispatcher = request.getRequestDispatcher("acessoliberado.jsp");
			dispatcher.forward(request, response);
		}else {
			RequestDispatcher dispatcher = request.getRequestDispatcher("acessonegado.jsp");
			dispatcher.forward(request, response);


		}
		}catch (Exception e){
			e.printStackTrace();
		}

		}

	

}
J

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.

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
		throws IOException, ServletException {
	try{
		**>>SingleConnection.getConnection();**
		arg2.doFilter(arg0, arg1);
		connection.commit();
	}catch(Exception e){
		try {
			connection.rollback();
		} catch (SQLException e1) {
		
			e1.printStackTrace();
		}
	}
}
C

Não funcionou :’(

J

manda o código da sua SingleConnection, TKS.

C
package connection;
import java.sql.Connection;
import java.sql.DriverManager;



//Responsável por fazer a conexão com o banco de dados


public class SingleConnection {
	private static String banco = "jdbc:postgresql://localhost:5432/CONSULTORIO?autoReconnect=true";
	//private static String password;
	private static String user = "postgres";
	private static Connection connection =null;
	
	
	
	static {
		conectar();

	}


	public SingleConnection(){
	conectar();


	}
	private static void conectar(){

	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(Exception e){
		throw new RuntimeException("Erro ao Conectar com o banco de dados");

	}

	}
	public static Connection getConnection(){
		return connection;
		
	}
}
J

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(Exception e){
		throw new RuntimeException("Erro ao Conectar com o banco de dados"); /*você está ocultando o tipo do 
erro, coloque a exception da maneira informada a baixo.*/
catch(Exception e){
            throw new RuntimeException("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.

C

vou dar uma lida. obrigado.

C

Continuou a mesma coisa, mudei a conexão do banco para SQL Server, segue novo código.

package connection;
import java.sql.Connection;
import java.sql.DriverManager;



//Responsável por fazer a conexão com o banco de dados


public class SingleConnection {
	private static String banco = "jdbc:sqlserver://localhost:1433/CONSULTORIO?autoReconnect=true";
    private static String password="32313099";
	private static String user = "sa";
	private static Connection connection =null;
	

	static {
		conectar();

	}


	public SingleConnection(){
	conectar();


	}
	private static void conectar(){

	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(Exception e){
        throw new RuntimeException("Erro ao Conectar com o banco de dados" + e);
}

	}
	public static Connection getConnection(){
		return connection;
		
	}
}

mai 24, 2017 11:48:21 PM org.apache.tomcat.util.digester.SetPropertiesRule begin

ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:ProjetoFinal did not find a matching property.

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server version:        Apache Tomcat/8.0.32

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server built:          Feb 2 2016 19:34:53 UTC

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server number:         8.0.32.0

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: OS Name:               Windows 7

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: OS Version:            6.1

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Architecture:          x86

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Java Home:             C:\Program Files (x86)\Java\jre1.8.0_121

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: JVM Version:           1.8.0_121-b13

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: JVM Vendor:            Oracle Corporation

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: CATALINA_BASE:         C:\apache-tomcat-8.0.32

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: CATALINA_HOME:         C:\apache-tomcat-8.0.32

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dcatalina.base=C:\apache-tomcat-8.0.32

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dcatalina.home=C:\apache-tomcat-8.0.32

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dwtp.deploy=C:\apache-tomcat-8.0.32\wtpwebapps

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=C:\apache-tomcat-8.0.32\endorsed

mai 24, 2017 11:48:21 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dfile.encoding=Cp1252

mai 24, 2017 11:48:21 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent

INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre1.8.0_121/bin/client;C:/Program Files (x86)/Java/jre1.8.0_121/bin;C:/Program Files (x86)/Java/jre1.8.0_121/lib/i386;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\Microsoft SQL Server\120\DTS\Binn;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;C:\Program Files (x86)\Skype\Phone;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;C:\FTC_TE1\eclipse;;.

mai 24, 2017 11:48:22 PM org.apache.coyote.AbstractProtocol init

INFORMAÇÕES: Initializing ProtocolHandler [“http-nio-8080”]

mai 24, 2017 11:48:23 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

INFORMAÇÕES: Using a shared selector for servlet write/read

mai 24, 2017 11:48:23 PM org.apache.coyote.AbstractProtocol init

INFORMAÇÕES: Initializing ProtocolHandler [“ajp-nio-8009”]

mai 24, 2017 11:48:23 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

INFORMAÇÕES: Using a shared selector for servlet write/read

mai 24, 2017 11:48:23 PM org.apache.catalina.startup.Catalina load

INFORMAÇÕES: Initialization processed in 2532 ms

mai 24, 2017 11:48:23 PM org.apache.catalina.core.StandardService startInternal

INFORMAÇÕES: Starting service Catalina

mai 24, 2017 11:48:23 PM org.apache.catalina.core.StandardEngine startInternal

INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/8.0.32

mai 24, 2017 11:48:24 PM org.apache.jasper.servlet.TldScanner scanJars

INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

mai 24, 2017 11:48:24 PM org.apache.catalina.core.StandardContext filterStart

GRAVE: Exception starting filter filter

java.lang.ExceptionInInitializerError

at filter.Filter.init(Filter.java:47)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)

at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:105)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4659)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5281)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.RuntimeException: Erro ao Conectar com o banco de dadosjava.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

at connection.SingleConnection.conectar(SingleConnection.java:42)

at connection.SingleConnection.(SingleConnection.java:18)

 13 more
mai 24, 2017 11:48:24 PM org.apache.catalina.core.StandardContext filterStart

GRAVE: Exception starting filter filter.Filter

java.lang.NoClassDefFoundError: Could not initialize class connection.SingleConnection

at filter.Filter.init(Filter.java:47)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)

at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:105)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4659)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5281)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

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

J

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.

C

conseguir resolver.
obrigado pela ajuda.

Criado 22 de maio de 2017
Ultima resposta 26 de mai. de 2017
Respostas 11
Participantes 2