2016-06-25 25 views
1

Mein Projekt funktionierte gestern gut. Das einzige, was ich tat, war, die Struktur von einem einzigen Krieg zu einem Multi-Modul-Pom zu ändern. Wenn ich den Stacktrace richtig verstehe, ist die Ambiguität zwischen der Schweißnaht und der Omnifaces websocket lib. Es scheint jedoch keinen Aufruf irgendeiner meiner Methoden auf dem Stacktrace zu geben. Vielleicht ist es ein Problem mit Omnifaces? Ich benutze nicht einmal omnifaces websockets, ich benutze javax.websocket. Ich habe es jedoch in diesem Projekt in der Vergangenheit versucht, und ich habe eine Suche auf "org.omnifaces.cdi" durchgeführt und Dinge aus Unterpaketen wie @Param auskommentiert, aber das Problem bleibt bestehen. Auch verstehe ich nicht, warum die ambiguousity scheinen von den zwei exakt gleichen Klassen zu sein:org.jboss.weld.exceptions.DeploymentException: WELD-001409: Mehrdeutige Abhängigkeiten für den Typ Bean mit Qualifiern @Default

  • Managed Bean [Klasse org.omnifaces.cdi.push.SocketSessionManager] mit Qualifier [@Any @Default] ,
  • Managed Bean [Klasse org.omnifaces.cdi.push.SocketSessionManager] mit Qualifier [@Any @Default]
[2016-06-25 03:13:59,430] Artifact core:war: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"core-0.0.1-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"core-0.0.1-SNAPSHOT.war\".WeldStartService: Failed to start service 
    Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 4 exceptions: 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketSessionManager with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions 
    at org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions(SocketPushContextProducer.java:0) 
    Possible dependencies: 
    - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default], 
    - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default] 

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367) 
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281) 
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134) 
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155) 
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketSessionManager with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketChannelManager.socketSessions 
    at org.omnifaces.cdi.push.SocketChannelManager.socketSessions(SocketChannelManager.java:0) 
    Possible dependencies: 
    - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default], 
    - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default] 

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367) 
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281) 
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134) 
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155) 
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketUserManager with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketSessionManager.socketUsers 
    at org.omnifaces.cdi.push.SocketSessionManager.socketUsers(SocketSessionManager.java:0) 
    Possible dependencies: 
    - Managed Bean [class org.omnifaces.cdi.push.SocketUserManager] with qualifiers [@Any @Default], 
    - Managed Bean [class org.omnifaces.cdi.push.SocketUserManager] with qualifiers [@Any @Default] 

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367) 
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281) 
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134) 
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155) 
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Exception 0 : 
org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318: Cannot resolve an ambiguous dependency between: 
    - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default], 
    - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default] 
    at org.jboss.weld.manager.BeanManagerImpl.resolve(BeanManagerImpl.java:1235) 
    at org.jboss.weld.bootstrap.Validator.validatePseudoScopedInjectionPoint(Validator.java:926) 
    at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:902) 
    at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:917) 
    at org.jboss.weld.bootstrap.Validator.validatePseudoScopedBean(Validator.java:879) 
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:138) 
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155) 
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
"}} 
+1

Ihr Laufzeitklassenpfad ist mit mehreren OmniFaces-Bibliotheken verschmutzt. Bereinigen Sie es gegebenenfalls auch auf der Serverseite. Nur um sicher zu sein, OmniFaces ist als WAR-Bibliothek konzipiert und daher ist WAR/WEB-INF/lib der einzig richtige Ort und sollte sich nirgendwo anders befinden (zB EAR/lib oder Server/lib), siehe auch Installationsanleitung bei Startseite. – BalusC

+0

Dank @BalusC, wusste ich, dass das Glas anstelle der Abhängigkeit von der Maven würde zurückkommen, um mich zu beißen :).Scheint so, als hättest du den Fix in die RC2 aufgenommen, die in maven ist, also brauche ich mir darüber keine Sorgen mehr zu machen. – Ced

Antwort

4

org.jboss.weld.exceptions.DeploymentException: WELD-001409: mehrdeutige Abhängigkeiten für Typ SocketSessionManager mit Qualifier @Default an der Injektionsstelle [BackedAnnotatedField] @Inject Privat org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions

Grundsätzlich entdeckte Weld mehrere CDI-gesteuerte Bohnen, die in das Feld private SocketSessionManager socketSessions der Klasse SocketPushContextProducer injiziert werden konnten. Sie werden danach aufgelistet:

Mögliche Abhängigkeiten:

  • Managed Bean [Klasse org.omnifaces.cdi.push.SocketSessionManager] mit Qualifier [@Any @Default]
  • Managed Bean [Klasse org .omnifaces.cdi.push.SocketSessionManager] mit Qualifier [@Any @Default]

In diesem speziellen Fall sind sie aber genau das gleiche. Dies bedeutet, dass es mehrere SocketSessionManager Klassen im Klassenpfad der Laufzeit gibt. Dies bedeutet wiederum, dass mehrere OmniFaces-Bibliotheken/-Abhängigkeiten im Klassenpfad der Laufzeit vorhanden sind (oder eine fehlerhafte Erstellung/(heiße) Bereitstellung, die durch Löschen der Arbeits-/temporären Ordner des Servers oder durch Erstellen einer sauberen Serverinstanz gelöst werden kann).

Sie müssen sicherstellen, dass nur eine OmniFaces-Bibliothek im Laufzeitklassenpfad vorhanden ist und in WAR /WEB-INF/lib endet.

Dies bezieht sich nicht speziell auf Websockets. Es war zufällig die erste OmniFaces-bezogene Klasse, die von Weld gescannt wurde. Es kann auf anderen CDI-verwalteten Beans auftreten, die in OmniFaces gebündelt sind.

+0

Ich habe ein ähnliches Problem, aber konnte die Ursache nicht finden. Könnten Sie pls helfen? Https: //stackoverflow.com/questions/46537209/weld-001409-ambigous-dependencies-for-type-stepcontext-with-qualifiers-defaul – yathirigan