gpt4 book ai didi

tomcat - 如何在 Tomcat 中为 CDI 配置 Weld?

转载 作者:行者123 更新时间:2023-11-28 22:28:56 24 4
gpt4 key购买 nike

<分区>

我使用的是 Netbeans。

这是我做的。

  1. 我使用了 Maven 依赖项。

    org.jboss.weld 文件 Weld osgi 束 3.0.0.Alpha8

  2. 现在,如他们的官方文档所述,我使用以下内容创建了 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呢?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com