【发布时间】:2015-05-03 15:20:32
【问题描述】:
我使用的是 Netbeans。
这就是我所做的。
-
我使用了 Maven 依赖项。
org.jboss.weld 焊接-osgi-bundle 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 是我项目的根!!
但是,这里有所不同,焊接文档只包括不包括其他参数。
而且,我还在 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。
我是这样添加的:
@注入 呸呸;
而且,在方法中
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//printwriter out configured
out.append(foo.gets1());
}
异常是 NullPointerException,这绝对是因为 Foo 类,我希望 CDI 能够工作,但事实并非如此。
那么,问题来了,如何在Tomcat中配置CDI?
【问题讨论】:
-
你为什么使用weld osgi?您的应用程序中有 OSGi 运行时吗?您可能需要weld servlet。此外,我会坚持使用 2.2.x 版本,因为 3.0 处于早期 alpha 阶段。
-
你为什么不试试 TomEE?
标签: tomcat jakarta-ee netbeans cdi weld