2016-03-22 48 views
6

Sto provando a configurare Jetty con JSF e Weld CDI. Dopo aver seguito this manuale, inciampo sul seguente stacktrace:Eccezione utilizzando CDI di saldatura con Jetty: Singleton non impostato per STATIC_INSTANCE

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 

Qualcuno vedere cosa c'è di sbagliato qui?

+0

Ti è dispiaciuto il file '/ WEB-INF/beans.xml'? – BalusC

+0

Questo è il mio WEB-INF/beans.xml:

+0

Il problema suggerisce che non è possibile trovare BeanManager. Quale versione di Jetty è? 9.2.4+ consente un modo più semplice di configurare: http://www.eclipse.org/jetty/documentation/current/framework-weld.html – BalusC

risposta

1

Il problema è che stai usando sia weld-servlet e weld-servlet-core nel tuo pom. Ciò sta causando voci di classe duplicate poiché weld-servlet è un aggregato di weld-servlet-core. La rimozione della dipendenza da servlet-weld ha corretto l'errore Singleton non impostato.

Ora, quando l'ho fatto, ho ricevuto errori su JSF ma potrebbero esserci altri problemi di configurazione.

+0

Sono arrivato a questo punto perché avevo bisogno di org.omnifaces.resourcehandler.CombinedResourceHandler per Bootsfaces, quindi ho iniziato ad aggiungere Omnifaces. Poi è risultato che avevo bisogno di CDI, quindi ho aggiunto la saldatura. In questo momento cerco di trovare le versioni corrispondenti per weld, jsf, etc.etc. quindi posso far funzionare la configurazione nel mio runner di prova, il plugin mega-mastro. In realtà sto iniziando a credere che una tale configurazione semplicemente non esista, mentre continuo a correre in altre eccezioni. Potresti forse dare un'occhiata agli "altri problemi di configrazione"? –

+0

Vedere anche http://stackoverflow.com/questions/27666681/weld-001300-when-trying-to-lookup-beanmanager-by-jndi e https://github.com/skaterkamp/streichelzoo-faces/blob/master /streichelzoo-site-webapp/pom.xml#L174 –

3

Questo errore appare se si dimentica il file beans.xml o, come nel mio caso, lo si è inserito nel posto sbagliato. Il tuo bean.xml può avere solo l'elemento root ma deve esistere.

Per un progetto Maven ricordare che:

  • context.xml shoud rimanere in src/main/webapp/META-INF/
  • beans.xml dovrebbe rimanere in src/main/resources/META-INF/

Ho avuto questo problema quando mi sono trasferito un'applicazione sviluppata utilizzando Glassfish (che non ha bisogno di questi file) per Tomcat 7.