Glassfish 4, exemplo simples em CDI falha com WELD-001408 dependencies insatisfeitas

Eu sou muito novato em CDI. Este é o meu PRIMEIRO exemplo e estou tentando executá-lo. Tendo pesquisado na internet eu escrevi o seguinte código: Classe que eu quero ser injetado

public class Temp { public Temp(){ } public String getMe(){ return "something"; } } 

Servlet

 @WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"}) public class NewServlet extends HttpServlet { @Inject public Temp temp; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { out.println(""); out.println("

Here it is"+temp.getMe()+ "

"); out.println(""); } } ...

Mas eu tenho que seguir o erro no glassfish 4:

org.jboss.weld.exceptions.DeploymentException: WELD-001408 Dependências insatisfeitas para o tipo [Temp] com qualificadores [@Default] no ponto de injeção [[BackedAnnotatedField] @Inject private xxx.example.NewServlet.temp]

O que estou fazendo de errado?

Nenhum beans.xml existe no WEB-INF ou o arquivo requer a mudança de bean-discovery-mode="annotated" para bean-discovery-mode="all" .


    

Explicação

O valor recomendado ” annotated ” apenas reconhece os beans gerenciados por CDI anotados. Feijões sem qualquer anotação são ignorados. Como sua class Temp não é um bean CDI , então a recomendação não é aplicável no seu caso.

Usando o modo de descoberta de beans = “anotado”

Para trabalhar com annotated , anote a class com @RequestScoped:

 // Import only this RequestScoped import javax.enterprise.context.RequestScoped; @RequestScoped public class Temp { public Temp() { } public String getMe() { return "something"; } } 

Este RequestScoped converterá sua class Temp em bean CDI e funcionará com bean-discovery-mode="annotated" .

Em mim trabalhou com este comando:

 asadmin set configs.config.server-config.cdi-service.enable-implicit-cdi=false 

Então desabilite o enable-implicit-cdi trabalhado para mim.