#wildfly #cdi #myfaces #weld #jsf-2.3
#wildfly #cdi #myfaces #сварной шов #jsf-2.3
Вопрос:
У меня есть файл EAR, который содержит две войны. В WAR1 есть приложение JSF (все работало нормально с JSF2.2 и ManagedBeans). После перехода на JSF2.3 с помощью компонентов CDI я получаю следующее исключение при попытке доступа к веб-приложению:
WELD-001456: компонент аргумента не должен быть нулевым (полная трассировка стека ниже)
Вот структура моего УХА
EAR
|- WAR1
|-WEB-INFbeans.xml
|-WEB-INFlibmyfaces-api-2.3.7.jar
|-WEB-INFlibmyfaces-impl-2.3.7.jar
|- WAR2
|-WEB-INFbeans.xml
Если я разверну EAR только с помощью WAR1, это сработает. Я погуглил, но не смог найти ответа.
Я использую Wildfly 19.1.0. Такое же исключение произошло также сразу после обновления до myfaces2.3.7 (без перехода на CDI).
Caused by: org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456: Argument bean must not be null
at org.jboss.weld.core@3.1.3.Final//org.jboss.weld.util.Preconditions.checkArgumentNotNull(Preconditions.java:40)
at org.jboss.weld.core@3.1.3.Final//org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:708)
at org.jboss.weld.core@3.1.3.Final//org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:64)
at org.jboss.weld.core@3.1.3.Final//org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:87)
at deployment.myapp.ear.web.war//org.apache.myfaces.cdi.util.CDIUtils.resolveInstance(CDIUtils.java:65)
at deployment.myapp.ear.web.war//org.apache.myfaces.cdi.util.CDIUtils.lookup(CDIUtils.java:52)
at deployment.myapp.ear.web.war//org.apache.myfaces.el.unified.ResolverBuilderBase.isReplaceImplicitObjectResolverWithCDIResolver(ResolverBuilderBase.java:232)
at deployment.myapp.ear.web.war//org.apache.myfaces.el.unified.ResolverBuilderForFaces.build(ResolverBuilderForFaces.java:108)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ApplicationImpl.createFacesResolver(ApplicationImpl.java:408)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ApplicationImpl.getELResolver(ApplicationImpl.java:389)
at deployment.myapp.ear.web.war//org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:230)
at deployment.myapp.ear.web.war//javax.faces.context.FacesContextWrapper.getELContext(FacesContextWrapper.java:85)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ApplicationImpl._handleResourceDependency(ApplicationImpl.java:2551)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ApplicationImpl._handleResourceDependencyAnnotations(ApplicationImpl.java:2515)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ApplicationImpl._handleAnnotations(ApplicationImpl.java:2285)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1537)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.facelets.compiler.FaceletsCompilerSupport.loadLibraries(FaceletsCompilerSupport.java:141)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.loadLibraries(FaceletViewDeclarationLanguage.java:2549)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.createCompiler(FaceletViewDeclarationLanguage.java:2188)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.initialize(FaceletViewDeclarationLanguage.java:2487)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.<init>(FaceletViewDeclarationLanguage.java:308)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguageStrategy.<init>(FaceletViewDeclarationLanguageStrategy.java:52)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.ViewDeclarationLanguageFactoryImpl.initialize(ViewDeclarationLanguageFactoryImpl.java:129)
at deployment.myapp.ear.web.war//org.apache.myfaces.view.ViewDeclarationLanguageFactoryImpl.getViewDeclarationLanguage(ViewDeclarationLanguageFactoryImpl.java:78)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ViewHandlerImpl.getViewDeclarationLanguage(ViewHandlerImpl.java:185)
at deployment.myapp.ear.web.war//javax.faces.application.ViewHandlerWrapper.getViewDeclarationLanguage(ViewHandlerWrapper.java:148)
at deployment.myapp.ear.web.war//org.apache.myfaces.shared.application.DefaultViewHandlerSupport.checkResourceExists(DefaultViewHandlerSupport.java:591)
at deployment.myapp.ear.web.war//org.apache.myfaces.shared.application.DefaultViewHandlerSupport.handleSuffixMapping(DefaultViewHandlerSupport.java:521)
at deployment.myapp.ear.web.war//org.apache.myfaces.shared.application.DefaultViewHandlerSupport.calculateViewId(DefaultViewHandlerSupport.java:86)
at deployment.myapp.ear.web.war//org.apache.myfaces.application.ViewHandlerImpl.deriveLogicalViewId(ViewHandlerImpl.java:124)
at deployment.myapp.ear.web.war//javax.faces.application.ViewHandlerWrapper.deriveLogicalViewId(ViewHandlerWrapper.java:127)
at deployment.myapp.ear.web.war//org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:222)
at deployment.myapp.ear.web.war//org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:195)
at deployment.myapp.ear.web.war//org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:142)
at deployment.myapp.ear.web.war//javax.faces.webapp.FacesServlet.service(FacesServlet.java:204)
... 72 more
Комментарии:
1. Похоже, это ошибка в myfaces CDIUtils.java #L65. Диспетчер компонентов не разрешает требуемый компонент. Я больше не могу помочь, не зная, какой компонент не вводится или как ваши компоненты (или нет) аннотированы). Можете ли вы добавить затронутые компоненты CDI?
2. BeanManager: Сварите BeanManager для myapp.ear [количество компонентов = 31]. beans — это пустая коллекция; я не вижу, какие компоненты вызывают проблему
3. Можете ли вы опубликовать небольшой проект, который воспроизводит проблему, или показать конкретный код? Было бы полезно знать, как вы вводите свои бобы. Кроме того, myfaces опубликовала новую стабильную версию (2.3.8). Пожалуйста, обновите свои библиотеки и сообщите, если ошибка все еще существует.