Glassfish 4, simple example in CDI fails with WELD-001408 Unsatisfied dependencies

后端 未结 2 1708
庸人自扰
庸人自扰 2021-01-25 17:45

I am a very newbie in CDI. This is my FIRST example and I am trying to run it. Having searched the internet I wrote the following code: Class that I want to be injected

相关标签:
2条回答
  • 2021-01-25 17:58

    At me worked with this command:

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

    So disable the enable-implicit-cdi worked for me.

    0 讨论(0)
  • 2021-01-25 18:22

    Either no beans.xml exists within WEB-INF or the file requires changing bean-discovery-mode="annotated" to bean-discovery-mode="all".


    <?xml version="1.0" encoding="UTF-8"?>
    <beans
      xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                      http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
      bean-discovery-mode="all">
    </beans>
    

    Explanation

    The recommended value "annotated" only recognizes annotated CDI managed beans. Beans without any annotation are ignored. As your Temp class is not CDI bean, so recommendation is not applicable in your case.

    Using bean-discovery-mode="annotated"

    To work with annotated, annotate the class with @RequestScoped:

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

    This RequestScoped will convert your Temp class to CDI bean and will be work with bean-discovery-mode="annotated".

    0 讨论(0)
提交回复
热议问题