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

Jan*_*ing 8 jetty maven-jetty-plugin cdi weld

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

Caused by: java.lang.IllegalStateException: Singleton not set for STATIC_INSTANCE => []
    at org.jboss.weld.bootstrap.api.helpers.RegistrySingletonProvider$RegistrySingleton.get(RegistrySingletonProvider.java:28)
    at org.jboss.weld.Container.instance(Container.java:55)
    at org.jboss.weld.SimpleCDI.<init>(SimpleCDI.java:77)
    at org.jboss.weld.environment.WeldProvider$EnvironmentCDI.<init>(WeldProvider.java:45)
    at org.jboss.weld.environment.WeldProvider.getCDI(WeldProvider.java:61)
    at javax.enterprise.inject.spi.CDI.current(CDI.java:60)
    at org.jboss.weld.servlet.WeldInitialListener.contextInitialized(WeldInitialListener.java:94)
    at org.jboss.weld.servlet.api.helpers.ForwardingServletListener.contextInitialized(ForwardingServletListener.java:34)
    at org.jboss.weld.environment.servlet.EnhancedListener.onStartup(EnhancedListener.java:65)
    at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:140)
    at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:63)
    ... 50 more
Run Code Online (Sandbox Code Playgroud)

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

xon*_*nya 5

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

对于Maven项目,请记住:

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

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


Joh*_*ent 1

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

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