<分区>
我使用的是 Netbeans。
这是我做的。
我使用了 Maven 依赖项。
org.jboss.weld 文件 Weld osgi 束 3.0.0.Alpha8
现在,如他们的官方文档所述,我使用以下内容创建了 Web Pages/META-INF/context.xml:
auth="Container" type="javax.enterprise.inject.spi.BeanManager" factory="org.jboss.weld.resources.ManagerObjectFactory"/>
mas 是我项目的根!!
但是,这里有所不同, Weld 文档仅包含没有其他参数。
而且,我还在 WEB-INF 文件夹中创建了 beans.xml,它看起来像这样......
<?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="annotated">
</beans>
但是,它并没有这么说。
并且,我在 web.xml 中添加了
<resource-env-ref>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>
javax.enterprise.inject.spi.BeanManager
</resource-env-ref-type>
</resource-env-ref>
并且,为了测试这是否有效,我创建了具有 setter 和 getter 的 POJO,并使用 @Named 和 @Dependent 进行注释。它看起来像这样。
@Named
@Dependent
public class Foo{
String s1="foo", s2="bar";
//setters and getters for those!!
}
并且,通过 netbeans 中的设置创建 servlet。
我是这样添加的:
@注入(inject) 噗噗;
并且,在方法中
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//printwriter out configured
out.append(foo.gets1());
}
异常是 NullPointerException,这肯定是因为 Foo 类,我希望 CDI 可以工作,但事实并非如此。
那么,问题来了,如何在Tomcat中配置CDI呢?