1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro ImplFinderException: Não foi encontrada implementação para a classe DAO, minha servlet não consegue chamar a minha DAO

Estou fazendo um projeto Java Web, porém a minha servlet não consegue chamar a DAO para realizar o método addUsuario(). Sempre que passa para a linha do ImplementationFinder.getImpl(UsuarioDAO.class), ele joga uma exceção quando acesso-a pelo navegador. Já tentei adicionar diversos jars, mudei a versão do meu java, do minispring, joguei todos os jars na lib do Web-INF também, porém nada. O que acontece é que o erro muda às vezes, porém esse mais recente não consigo reverter.

https://www.filepicker.io/api/file/xI5NuT20S8GUrfH7fNTf

https://www.filepicker.io/api/file/PbO0y0NhQwOCY5jAUCCh

https://www.filepicker.io/api/file/pMOMy6kjStGN1U5wzV7U

Esse é o código da minha servlet, que deve chamar a minha DAO.

package br.com.fatec.rede_social.web.servlet;

import java.io.IOException;
import java.sql.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.fatec.rede_social.api.dao.UsuarioDAO;
import br.com.fatec.rede_social.api.entity.Usuario;
import br.com.fatec.rede_social.core.service.GeradorIdService;
import br.com.spektro.minispring.core.implfinder.ImplementationFinder;

public class CreateUserServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
        resp.sendRedirect("index.html");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
        String nick = req.getParameter("nick");
        String senha1 = req.getParameter("senha1");
        String senha2 = req.getParameter("senha2");
        String email = req.getParameter("email");
        String nome = req.getParameter("nome");
        String data = req.getParameter("data");
        System.out.println("1");
        if(!(nick.equals("") || senha1.equals("") || senha2.equals("") || email.equals("") || nome.equals("") || data.equals(""))){
            if(senha1.equals(senha2)){
                System.out.println("2");

                GeradorIdService id = new GeradorIdService();
                System.out.println("3");

                UsuarioDAO dao = ImplementationFinder.getImpl(UsuarioDAO.class);
                System.out.println("4");

                Usuario u = dao.addUsuario(new Usuario(id.getNextId(Usuario.TAB_NAME).intValue(),email,senha1,nome,nick,Date.valueOf(data)));
                System.out.println("5");

                resp.getWriter().println("Usuário cadastrado");
            }
            else resp.getWriter().println("Senhas diferentes");
        }
        else resp.getWriter().println("Um ou mais campos não foram preenchidos");
        resp.getWriter().println("<br><a href='index.html'>Voltar</a>");
    }
}

Essa é a minha DAOImpl

package br.com.fatec.rede_social.core.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.LinkedList;
import java.util.List;

import org.apache.commons.dbutils.DbUtils;

import br.com.fatec.rede_social.api.dao.UsuarioDAO;
import br.com.fatec.rede_social.api.entity.Usuario;
import br.com.spektro.minispring.core.dbmapper.ConfigDBMapper;

public class UsuarioDAOImple implements UsuarioDAO {

    @Override
    public Usuario addUsuario(Usuario u) {
        Connection c = null;
        PreparedStatement insert = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            insert = c.prepareStatement("insert into "+Usuario.TAB_NAME+" values(?,?,?,?,?,?);");

            insert.setLong(1, u.getId());
            insert.setString(2, u.getEmail());
            insert.setString(3, u.getSenha());
            insert.setString(4, u.getNome());
            insert.setString(5, u.getNick());
            insert.setDate(6, (Date) u.getData());

            insert.execute();

            return this.getUsuarioId(u.getId());
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    @Override
    public Usuario getUsuarioId(Integer i) {
        Connection c = null;
        PreparedStatement select = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            select = c.prepareStatement("SELECT * FROM "+Usuario.TAB_NAME+" where US_ID = ?;");
            select.setInt(1, i);

            ResultSet rs = select.executeQuery();
            rs.next();
            return criarUsuario(rs);
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    @Override
    public List<Usuario> getUsuarioTodos() {
        Connection c = null;
        PreparedStatement select = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            select = c.prepareStatement("SELECT * FROM "+Usuario.TAB_NAME+";");
            ResultSet rs = select.executeQuery();
            return criarUsuarios(rs);
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    @Override
    public List<Usuario> getUsuariosComunidade(Integer id) {
        Connection c = null;
        PreparedStatement select = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            select = c.prepareStatement("SELECT * FROM "+Usuario.TAB_NAME+" WHERE "+Usuario.COL_ID+" in (SELECT MCD_ID_USUARIO FROM MEMBROS_COMUNIDADE WHERE MCD_ID_COMUNIDADE = ?);");
            select.setInt(1, id);            

            ResultSet rs = select.executeQuery();            
            return criarUsuarios(rs);
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    @Override
    public Usuario getUsuarioSenha(String nick, String senha){
        Connection c = null;
        PreparedStatement select = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            select = c.prepareStatement("SELECT * FROM "+Usuario.TAB_NAME+" WHERE "+Usuario.COL_NICK+" = ? AND "+Usuario.COL_SENHA+" = ?;");
            select.setString(1, nick);        
            select.setString(2, senha);

            ResultSet rs = select.executeQuery();            
            return criarUsuario(rs);
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    @Override
    public Usuario updateUsuario(Integer id, Usuario u_at) {
        Connection c = null;
        PreparedStatement update = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            update = c.prepareStatement("UPDATE "+Usuario.TAB_NAME+" SET "+
            Usuario.COL_ID+" = "+u_at.getId()+", "+
            Usuario.COL_EMAIL+" = "+u_at.getEmail()+", "+
            Usuario.COL_SENHA+" = "+u_at.getSenha()+", "+
            Usuario.COL_NOME+" = "+u_at.getNome()+", "+
            Usuario.COL_NICK+" = "+u_at.getNick()+", "+
            Usuario.COL_DATA+" = "+u_at.getData()+
            " WHERE "+Usuario.COL_ID+" = "+id+";");
            update.execute();
            return this.getUsuarioId(u_at.getId());
        }
        catch(Exception ex){
            throw new RuntimeException(ex);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    @Override
    public void deleteUsuario(Usuario u) {
        Connection c = null;
        PreparedStatement delete = null;

        try{
            c = ConfigDBMapper.getDefaultConnection();
            delete = c.prepareStatement("DELETE FROM "+Usuario.TAB_NAME+" WHERE "+Usuario.COL_ID+" = "+u.getId()+";");
            delete.execute();
        }
        catch(Exception ex){
            throw new RuntimeException(ex);
        }
        finally{
            DbUtils.closeQuietly(c);
        }
    }

    private static List<Usuario> criarUsuarios(ResultSet rs) throws SQLException, ParseException{
        List<Usuario> lista = new LinkedList<Usuario>();

        while(rs.next()){
            Usuario u = new Usuario();
            u = criarUsuario(rs);
            lista.add(u);
        }
        return lista;
    }

    private static Usuario criarUsuario(ResultSet rs) throws SQLException, ParseException{
        Usuario u = new Usuario();

        u.setId(rs.getInt(Usuario.COL_ID));
        u.setEmail(rs.getString(Usuario.COL_EMAIL));
        u.setSenha(rs.getString(Usuario.COL_SENHA));
        u.setNome(rs.getString(Usuario.COL_NOME));
        u.setNick(rs.getString(Usuario.COL_NICK));        
        u.setData(rs.getDate(Usuario.COL_DATA));

        return u;
    }
}

E esta minha DAO

 package br.com.fatec.rede_social.api.dao;
 import java.util.List;

import br.com.fatec.rede_social.api.entity.Comunidade;
import br.com.fatec.rede_social.api.entity.Usuario;

public interface UsuarioDAO {

    //Adicionar
    public Usuario addUsuario(Usuario u);

    //get
    public Usuario getUsuarioId(Integer id);
    public List<Usuario> getUsuarioTodos();    
    public List<Usuario> getUsuariosComunidade(Integer id);
    public Usuario getUsuarioSenha(String nick, String senha);

    //update
    public Usuario updateUsuario(Integer id, Usuario u_at);

    //delete
    public void deleteUsuario(Usuario u);

}

Realmente não tenho ideia do que pode ser :(

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java tomcat ou faça a sua própria pergunta.