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

标签 tomcat jakarta-ee netbeans cdi weld

<分区>

我使用的是 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呢?

最佳答案

开箱即用的 tomcat 不支持 CDI,您可以使用 TomEE解决这个问题。或者,您可以添加 weld servlet jarWEB-INF/lib 文件夹。提供详细流程HERE .

使用 Maven,添加此依赖项:

<dependency>
    <groupId>org.jboss.weld.servlet</groupId>
    <artifactId>weld-servlet</artifactId>
    <version>2.2.11.Final</version>
</dependency>

关于tomcat - 如何在 Tomcat 中为 CDI 配置 Weld?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015540/

相关文章:

apache - 到 Apache 2.4.4 和 Tomcat 7.0.33。通过 HTTPS 访问网站产生 “Object not found” 错误

Java 数据建模 - 将关系数据保存为可互操作的格式

java - 如何更改应用程序的外观和风格?

tomcat - 登录后如何刷新JSESSIONID cookie

java - Mac OS X 上的 Tomcat 6.0

java - ThreadLocal 在企业应用中的使用

node.js - 有什么方法可以使用 exe 文件执行我的 Node js 和 puppeteer 程序吗?

java - 登录对话框不显示欢迎

tomcat - 取消部署 Tomcat Web 应用程序时如何防止文件锁定?

java - 在不刷新的情况下更新jsp页面的内容