Seguinte
fiz a injeção na ProdutoController
public class ProdutoController{
private final ProdutoDao dao;
@Inject
public ProdutoController(ProdutoDao dao){
this.dao = dao;
}
// fiz um construtor default com null como diz a CDI
public ProdutoController(){
this(null);
}
}
Na classe ProdutoDao fiz a injeção e um construtor default
public class ProdutoDao{
private final EntityManager em;
@Inject
public ProdutoDao(EntityManager em) {
this.em = em;
}
public ProdutoDao(){
this(null);
}
}
Como ele precisa criar o EntityManager criei a classe, que chama o método da JPAutil
public class EntityManagerProducer{
@Produces
public EntityManager ciraEM(){
return JPAUtil.criaEntityManager();
}
}
Segundo a CDI toda vez que um método precisar contruir um objeto do tipo EntityManager deve procurar as classes com @Produces, mas isso não acontece e da esse erro
Unsatisfied dependencies for type EntityManager with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public br.com.caelum.vraptor.dao.ProdutoDao(EntityManager)
at br.com.caelum.vraptor.dao.ProdutoDao.<init>(ProdutoDao.java:0)