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.