Conexão com o banco de dados

Eai pessoal!

Estou com um projeto utilizando JSF, que estou tendo um problema de retorno de conexão.

Quando utilizo o frontend, a conexão está retornando null.

Erro:

javax.servlet.ServletException: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

Estava rodando o processo debugando e coloquei um sout no catch pra imprimir a exceção, e obtive isso aqui:

java.lang.ClassNotFoundException: org.postgresql.Driver from [Module "deployment.projeto_receita.war:main" from Service Module Loader]

Vi que esse erro é algo com o driver, mas quando eu faço as interações com o banco de dados, por um método main, eu obtenho a conexão normalmente, e consigo inserir, deletar, etc…

Tá aí uma foto do meu connection no momento que estou rodando o código pela classe main:

Eu obtenho a conexão normalmente. Já quando executo pelo o front, o connection me retorna null. Vou colocar aqui minhas classes pra ver se alguém sabe onde pode ser o erro. Não sei se pode ser alguma dependência no pom, pois estou utilizando o driver que comumente vejo sendo utilizado em projetos, e a versão que está em meu pom é a mesma do driver do banco:

print3

Classe ConnectionFactory:

package connection;

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

public class ConnectionFactory {

    private static final String DRIVER_CLASS = "org.postgresql.Driver";
    private static final String URL = "jdbc:postgresql://localhost:5432/receita_cadastro";
    private static final String username = "postgres";
    private static final String password = "123456";


    public static Connection getConnection(){

        Connection connection = null;

        try{
            Class.forName(DRIVER_CLASS);
            connection = DriverManager.getConnection(URL, username, password);
            connection.setAutoCommit(true);
        } catch (SQLException | ClassNotFoundException e) {
            System.out.println(e.getMessage());
//            e.printStackTrace();
        }
        return connection;
    }

}


Classe DAO (Método salvar):

public class ReceitaDAO {

    Connection connection = null;

    public boolean salvar(Receita receita) {

        Connection connection =  new ConnectionFactory().getConnection();

        String sql = "INSERT INTO receita(nome, tipo, ingredientes, modopreparo) VALUES(?,?,?,?)";

        try {
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, receita.getNome());
            preparedStatement.setString(2, receita.getTipoReceita());
            preparedStatement.setString(3, receita.getIngredientes());
            preparedStatement.setString(4, receita.getModoDePreparo());
            preparedStatement.execute();

            return true;

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;

    }

Classe Controller:

package controller;

import dao.ReceitaDAO;
import model.Receita;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.util.List;

@ViewScoped
@ManagedBean
public class ReceitaController {

    private Receita receita;
    private ReceitaDAO receitaDAO;
    private List<Receita> receitaList;

    public ReceitaController() {
        this.receita = new Receita();
        this.receitaDAO = new ReceitaDAO();
    }

    public void salvarReceita() {
        this.receitaDAO.salvar(this.receita);
        this.clearInfo();
    }

    public void updateReceita() {
        this.receitaDAO.updateReceita(receita);
    }

    public List<Receita> getReceitaList() {
        if (this.receitaList == null)
            this.receitaList = this.receitaDAO.ListingReceita();
        return this.receitaList;
    }

    public void deleteReceita() {
        this.receitaDAO.deleteReceita(receita);
    }

    public void clearInfo() {
        this.receita = new Receita();
        this.receitaList = null;
    }

    public Receita getReceita() {
        return receita;
    }

    public void setReceita(Receita receita) {
        this.receita = receita;
    }

    public ReceitaDAO getReceitaDAO() {
        return receitaDAO;
    }

    public void setReceitaDAO(ReceitaDAO receitaDAO) {
        this.receitaDAO = receitaDAO;
    }

    public void setReceitaList(List<Receita> receitaList) {
        this.receitaList = receitaList;
    }
}

Pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>projeto-receita</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.20</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.faces</artifactId>
            <version>2.2.19</version>
        </dependency>
    </dependencies>
    
</project>

Desde já agradeço!

Parece que o erro está no “security context”. Algum objeto lá não está sendo inicializado/injetado.

1 curtida