Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro dependencias usando o servidor de aplicação WildFly

Pessoal, estou seguindo o curso mas ao inves de usar tomcat estou usando o wildfly 8 por motivo de estar aprendendo pra dar manutenção em um sistema que tem esse servidor. AO tentar subir a aplicação estou tomando o erro abaixo:

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type DAO with qualifiers @Default at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public br.com.alura.livraria.bean.LivroBean(DAO, DAO) at br.com.alura.livraria.bean.LivroBean.(LivroBean.java:0)

package br.com.alura.livraria.bean;

import java.io.Serializable;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.alura.alura_lib.annotations.Transacional;
import br.com.alura.alura_lib.dao.DAO;
import br.com.alura.livraria.modelo.Autor;
import br.com.alura.livraria.modelo.Livro;

@Named
@ViewScoped
public class LivroBean implements Serializable {


    private static final long serialVersionUID = 3174193469804258996L;

    private Livro livro = new Livro();

    private Integer autorId;

    private List<Livro> livros;

    private DAO<Livro> livroDao;

    private DAO<Autor> autorDao;

    @Inject
    public LivroBean(DAO<Livro> livroDao, DAO<Autor> autorDao){
        this.livroDao = livroDao;
        this.autorDao = autorDao;
    }


    public void setAutorId(Integer autorId) {
        this.autorId = autorId;
    }

    public Integer getAutorId() {
        return autorId;
    }

    public Livro getLivro() {
        return livro;
    }

    public List<Livro> getLivros() {
        if(this.livros == null) {
            this.livros = livroDao.listaTodos();
        }
        return livros;
    }

    public List<Autor> getAutores() {
        return autorDao.listaTodos();
    }

    public List<Autor> getAutoresDoLivro() {
        return this.livro.getAutores();
    }

    public void carregarLivroPelaId() {
        this.livro = livroDao.buscaPorId(this.livro.getId());
    }

    public void gravarAutor() {
        Autor autor = autorDao.buscaPorId(this.autorId);
        this.livro.adicionaAutor(autor);
        System.out.println("Escrito por: " + autor.getNome());
    }

    @Transacional
    public void gravar() {
        System.out.println("Gravando livro " + this.livro.getTitulo());

        if (livro.getAutores().isEmpty()) {
            FacesContext.getCurrentInstance().addMessage("autor",
                    new FacesMessage("Livro deve ter pelo menos um Autor."));
            return;
        }

        if(this.livro.getId() == null) {
            livroDao.adiciona(this.livro);
            this.livros = livroDao.listaTodos();
        } else {
            livroDao.atualiza(this.livro);
        }

        this.livro = new Livro();
    }

    @Transacional
    public void remover(Livro livro) {
        System.out.println("Removendo livro");
        livroDao.remove(livro);
        this.livros = livroDao.listaTodos();
    }

    public void removerAutorDoLivro(Autor autor) {
        this.livro.removeAutor(autor);
    }

    public void carregar(Livro livro) {
        System.out.println("Carregando livro");
        this.livro = livro;
    }

    public String formAutor() {
        System.out.println("Chamanda do formulário do Autor.");
        return "autor?faces-redirect=true";
    }

    public void comecaComDigitoUm(FacesContext fc, UIComponent component,
            Object value) throws ValidatorException {

        String valor = value.toString();
        if (!valor.startsWith("1")) {
            throw new ValidatorException(new FacesMessage(
                    "ISBN deveria começar com 1"));
        }

    }
}
2 respostas

Olá, tudo bem ?

Esse erro é bem comum, para o solucionar você vai precisar criar qualificadores, pois você tem dependências ambíguas que retornam o mesmo tipo de objeto, ambas devolvem o DAO.

Com os qualificadores você ajuda o CDI a distinguir qual objeto ele deve devolver para injeção.

Tem um capítulo no curso que ensina a criar esses qualificadores.

Abraços

solução!

Matheus,

O problema não era esse não. Refiz o projeto aqui até na parte onde mandava criar a lib que era onde eu tinha praticamente parado. Continuava a dar o mesmo erro. Assisti o vídeo novamente da criação da lib. O que faltava era criar o beans.xml no projeto alura-lib.

Faltou falar na task https://cursos.alura.com.br/course/cdi-usando-umas-das-principais-espeficacoes-do-javaee/task/20305 a criação do arquivo beans.xml no projeto alura-lib.