使用带有Jetty的焊接CDI的例外:未为STATIC_INSTANCE设置单例

时间:2016-03-22 21:34:10

标签: jetty cdi maven-jetty-plugin weld

我正在尝试使用JSF和Weld CDI配置Jetty。按照this手册后,我偶然发现了以下堆栈跟踪:

10 20 30 40 50 60 70 80 90 
11 21 31 41 51 61 71 81 91 
12 22 32 42 52 62 72 82 92 
13 23 33 43 53 63 73 83 93 
14 24 34 44 54 64 74 84 94 
15 25 35 45 55 65 75 85 95 
16 26 36 46 56 66 76 86 96 
17 27 37 47 57 67 77 87 97 
18 28 38 48 58 68 78 88 98 
19 29 39 49 59 69 79 89 99 

有人看到这里出了什么问题吗?

2 个答案:

答案 0 :(得分:5)

如果您忘记 beans.xml 文件,或者在我的情况下,您将其放在错误的位置,则会出现此错误。您的beans.xml只能包含根元素,但必须存在。

对于 Maven 项目,请记住:

  • context.xml请留在src/main/webapp/META-INF/
  • beans.xml应留在src/main/resources/META-INF/

当我将使用Glassfish开发的应用程序(不需要这些文件)移动到Tomcat 7时,我遇到了这个问题。

答案 1 :(得分:1)

问题是您在pom中同时使用weld-servletweld-servlet-core。这导致重复的类条目,因为weld-servlet是weld-servlet-core的集合。删除weld-servlet-core依赖项修复了单例未设置错误。

现在,当我这样做时,我收到了有关JSF的错误,但这可能是其他配置问题。