【问题标题】:How to configure Weld in Tomcat for CDI? [duplicate]如何在 Tomcat 中为 CDI 配置 Weld? [复制]
【发布时间】:2015-05-03 15:20:32
【问题描述】:

我使用的是 Netbeans。

这就是我所做的。

  1. 我使用了 Maven 依赖项。

    org.jboss.weld 焊接-osgi-bundle 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 是我项目的根!!

但是,这里有所不同,焊接文档只包括不包括其他参数。

而且,我还在 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


【解决方案1】:

tomcat 不支持 CDI,你可以使用TomEE 来解决这个问题。或者,您可以将weld servlet jar 添加到WEB-INF/lib 文件夹。详细流程提供HERE

使用 Maven,添加这个依赖:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2015-02-16
    • 2011-04-19
    • 2016-02-14
    • 2018-10-27
    相关资源
    最近更新 更多