这是我第一次与 GAE 合作,我正在尝试让 CDI 工作。长话短说:@Inject
我的 servlet 中的字段没有被注入(它总是null
)。
我在 Eclipse 中工作并在 GAE SDK 中包含的本地测试服务器上调试应用程序(它也由 Eclipse 启动)。当我在 上访问 servlet 时localhost
,我得到一个空指针异常someService
。我还输出了 的值someService
来验证它是真的null
,它是。
编辑:当我向@Named("skldjfx")
注入点添加限定符时,Weld 抱怨依赖项不满足(在验证阶段),所以这是一个好兆头。但是,该字段仍然是null
.
小服务程序:
public class BlogServlet extends HttpServlet {
@Inject private SomeService someService;
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("Hello. " + someService.getSomeValue());
// \
// always null
}
}
SomeService
班级:
@ApplicationScoped
public class SomeService {
private String someValue = "some value";
public String getSomeValue() {
return someValue;
}
}
我已经在以下位置配置Listener
了Weld web.xml
:
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
侦听器已正确加载,因为它记录了其初始化消息:org.jboss.weld.environment.servlet.Listener contextInitialized
.
我在和beans.xml
中都包含(一个空的) 。我也试过没有. 可能没有处理?文件夹中的其他内容(如)已正确处理。war/WEB-INF
war/META-INF
META-INF
beans.xml
WEB-INF
web.xml
如何验证是否beans.xml
已处理和/或修复SomeService
未注入?