org.jboss.weld.exceptions.DeploymentException: WELD-001409: неоднозначные зависимости для типа Bean с квалификаторами @Default
Мой проект работал нормально вчера. Единственное, что я сделал, это изменил структуру с одной войны на многомодульный пом. Если я правильно понимаю трассировку стека, то есть неоднозначность между сваркой и библиотекой веб-сокетов omnifaces. Тем не менее, кажется, нет никакого вызова для любого из моих методов на трассировке стека. Так может проблема в омнифе? Я даже не использую веб-сокеты omnifaces, я использую javax.websocket. Однако в прошлом я пробовал это в этом проекте, и я выполнил поиск на "org.omnifaces.cdi" и прокомментировал вещи из подпакетов, такие как @Param
но проблема остается. Также я не понимаю, почему двусмысленность, кажется, происходит от 2 точно таких же классов:
- Управляемый компонент [class org.omnifaces.cdi.push.SocketSessionManager] с квалификаторами [@Any @Default],
- Управляемый компонент [class org.omnifaces.cdi.push.SocketSessionManager] с квалификаторами [@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 ответ
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Неоднозначные зависимости для типа SocketSessionManager с квалификаторами @Default в точке внедрения [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketPushContextProducersocket
По сути, Weld обнаружил несколько управляемых компонентов CDI, которые могут быть внедрены в private SocketSessionManager socketSessions
поле SocketPushContextProducer
учебный класс. Они перечислены после:
Возможные зависимости:
- Управляемый компонент [class org.omnifaces.cdi.push.SocketSessionManager] с квалификаторами [@Any @Default]
- Управляемый компонент [class org.omnifaces.cdi.push.SocketSessionManager] с квалификаторами [@Any @Default]
В этом конкретном случае они, однако, точно так же. Это означает, что есть несколько SocketSessionManager
классы во время выполнения classpath. Это, в свою очередь, означает, что в пути к классам выполнения (или "грязной" /(горячей)) установке имеется несколько библиотек / зависимостей OmniFaces, которые могут быть решены путем уничтожения рабочих / временных папок сервера или создания чистого экземпляра сервера).
Вы должны убедиться, что в пути к классам выполнения есть только одна библиотека OmniFaces и что она заканчивается в WAR /WEB-INF/lib
,
Это не относится конкретно к веб-сокетам. Так случилось, что это был первый класс, связанный с OmniFaces, который сканировал Weld. Это может произойти с любым другим управляемым компонентом CDI, включенным в OmniFaces.
Это также может быть просто изменение версии в pom и несогласованность кэша сборки maven. mvn clean
помогло в моем случае.