java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansWebListener.requestInitialized
Я использую TomEE Plus 1.7.2 Server и пытаюсь запустить веб-приложение с включенным OmniFaces, но я получаю исключение Nullpointer:
ПРЕДУПРЕЖДЕНИЕ. Не удалось создать экземпляр готового запроса bean-объекта области действия для запроса /index.xhtml. Возможно, область запроса CDI не активна. Если это действительно так, см. JavaDoc на org.omnifaces.cdi.Eager о том, как это исправить.
java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansWebListener.requestInitialized (EagerBeansWebListener.java:78)
Когда я использую EagerBeansFilter, как показано в документации OmniFaces, я получаю небольшое изменение:
ПРЕДУПРЕЖДЕНИЕ. Не удалось создать экземпляр готовых к работе компонентов. Возможно, область применения CDI не активна. Известно, что это имеет место в определенных конфигурациях Tomcat и Jetty.
java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansRepository.instantiateApplicationScopedAndRegisterListener (EagerBeansRepository.java:69)
Разве этот сервер не совместим с омнифасами?
1 ответ
TomEE следует за WildFly, одним из наиболее протестированных серверов для OmniFaces, особенно потому, что он использует почти везде в Java EE иную реализацию по сравнению с WildFly (Apache против Oracle). В матрице совместимости OmniFaces вы можете найти версии TomEE, которые успешно прошли через все страницы в витрине OmniFaces.
Те исключения, упомянутые в вашем вопросе, будут выброшены, когда CDI BeanManager
не смог найти OmniFaces EagerBeansRepository
, который является @ApplicationScoped
боб. Это, в свою очередь, указывает на неправильно сконфигурированную среду CDI (например, неверный beans.xml или отсутствующую конфигурацию JNDI/listener) или грязную сборку (например, дублирующиеся библиотеки). Проверка конфигурации CDI и выполнение полной очистки / восстановления должны решить проблему.
По крайней мере, OmniFaces 2.2 или новее технически несовместимы с TomEE 1.x, потому что TomEE 1.x поставляется с JSF 2.1, а OmniFaces 2.2 или новее сильно зависит от JSF 2.2 из-за новых <o:viewAction>
тег. Таким образом, если вы не измените TomEE для обеспечения JSF 2.2, OmniFaces 2.2 или более поздней версии не будет развертываться и должен провалиться развертывание со следующим исключением:
java.lang.NoClassDefFoundError: javax /faces / component / UIViewAction
Последней версией OmniFaces, которая успешно разворачивается на стандартном сервере TomEE 1.7.x, является OmniFaces 2.1. Если вы хотите использовать OmniFaces 2.2 или новее на стандартном TomEE, то вам нужно обновить его до TomEE 7.x.