Dependency Injection
stormtag Dec 11, 2009 10:32 PMSo, I'm in the process of learning Weld in its most basic form. I got Weld seeming to deploy correctly and so forth for Tomcat. However, my Injection doesn't seem to be working for my servlet.
Here's my stack trace:
javax.enterprise.inject.UnsatisfiedResolutionException: class com.test.weld.HelloSayer; binding types = [@Default]Unable to resolve any Managed Beans org.jboss.weld.BeanManagerImpl.getBean(BeanManagerImpl.java:1074) org.jboss.weld.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:1040) org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:92) org.jboss.weld.util.Beans.injectBoundFields(Beans.java:727) org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:739) org.jboss.weld.SimpleInjectionTarget$1.proceed(SimpleInjectionTarget.java:115) org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:51) org.jboss.weld.SimpleInjectionTarget.inject(SimpleInjectionTarget.java:109) org.jboss.weld.environment.tomcat.WeldAnnotationProcessor.processAnnotations(WeldAnnotationProcessor.java:38) org.jboss.weld.environment.tomcat.WeldLifecycleListener$2.processAnnotations(WeldLifecycleListener.java:51) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) java.lang.Thread.run(Thread.java:636)
And here're my two classes...
package com.test.weld; public class HelloSayer { public String sayHello(String input) { return "Hello " + input + "!"; } }
package com.test.weld; import java.io.IOException; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HelloWeldServlet */ public class HelloWeldServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Inject HelloSayer helloSayer; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); response.getWriter().write(helloSayer.sayHello("Weld")); } }
I'm pretty sure there's something completely retarded I'm not doing right.