CDI: WELD-001408 Dependências não satisfeitas, como resolvê-lo?
Eu faço um pequeno projeto de teste com CDI. Meu aplicativo é composto de um EJB EAR e WAR, todos implantados no Glassfish 4. Estou usando o Hibernate 4.3.4 para acessar o banco de dados.
Meu objetivo é verificar se uma classe em um EJB (DAO) pode receber uma injeção de um EntityManager.
O padrão SessionBean + EJB não é fantástico, mas tenho que modificar um aplicativo já criado para não ter muita escolha.
Aqui está o meu código do EJB:
@Named
public class DAOTest implements Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName="CDI-ejb")
private EntityManager em;
public void test(){
//em.getClass();
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
public DAOTest() {
// TODO Auto-generated constructor stub
}
}
Service.java
@Stateless
@LocalBean
public class Service implements ServiceLocal {
@Inject DAOTest test;
/**
* Default constructor.
*/
public Service() {
// TODO Auto-generated constructor stub
}
@Override
public void test() {
test.test();
}
}
e ServiceLocal.java
@Local
public interface ServiceLocal {
void test();
}
E dentro da minha guerra:
@WebServlet("/Test")
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
@Inject private ServiceLocal service;
/**
* @see HttpServlet#HttpServlet()
*/
public Test() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
service.test();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Testei o DAOTest anotando-o com anotação @ Stateless. Tudo acontece como deveria. Então, o CDI funciona bem. Mas com apenas @ Named, ele não quer funcionar.
,Qualquer ideia?
O stacktrace:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [DAOTest] with qualifiers [@Default] at injection point [[BackedAnnotatedField] @Inject test.Service.test]
Meus beans.xml
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>