2016-04-11 1 views
1

Я использую TomEE Plus 1.7.2 сервера и попробуйте запустить веб-приложение с OmniFaces включен, но я получаю исключение NullPointer:java.lang.NullPointerException в org.omnifaces.cdi.eager.EagerBeansWebListener.requestInitialized

WARNUNG: Could not instantiate eager request scoped beans for request /index.xhtml. Possibly the CDI request scope is not active. If this is indeed the case, see JavaDoc on org.omnifaces.cdi.Eager on how to remedy this.

java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansWebListener.requestInitialized(EagerBeansWebListener.java:78)

Когда я использую EagerBeansFilter, как показано на OmniFaces docs, я получаю небольшое изменение:

WARNUNG: Could not instantiate eager application scoped beans. Possibly the CDI application scope is not active. This is known to be the case in certain Tomcat and Jetty based configurations.

java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansRepository.instantiateApplicationScopedAndRegisterListener(EagerBeansRepository.java:69)

Является ли это сервер не комбинируется с omnifaces?

+0

Какая версия OmniFaces точно? Здесь вы можете найти матрицу совместимости: https://github.com/omnifaces/omnifaces/wiki/Compatibility-Matrix TomEE - один из самых проверенных серверов. Является ли webapp для Tomcat или Java EE? TomEE определенно не сопоставим с Tomcat. Любой целевой объект Tomcat (или Jetty или любой другой пользовательский стек), с которым работает webapp, каким-то образом сработает при развертывании на стандартный сервер Java EE. – BalusC

+0

Проблема, по крайней мере, предполагает неверно сконфигурированную среду CDI. Возможно, webapp действительно нацелен на Tomcat и связывает некоторые библиотеки CDI, в то время как это совершенно не нужно, когда они развертываются на стандартном сервере Java EE, который уже предоставляет несколько реализаций API Java EE, таких как CDI (и JSF!). – BalusC

+0

ok, проблема, казалось, была связана с версией: я использовал 2.2-RC2, теперь обновлен до 2.3 и больше не стал исключением! – Lemao1981

ответ

1

TomEE после WildFly является одним из самых проверенных серверов для OmniFaces, особенно потому, что он использует почти везде в Java EE различную реализацию по сравнению с WildFly (Apache и Oracle). В OmniFaces compatibility matrix вы можете найти версии TomEE, которые успешно прошли через все страницы в OmniFaces showcase.

Эти исключения, упомянутые в вашем вопросе, будут выбрасываться, если CDI BeanManager не удалось найти OmniFaces EagerBeansRepository, который является bean-компонентом @ApplicationScoped. Это, в свою очередь, указывает на неправильно сконфигурированную среду CDI (например, неправильный beans.xml или отсутствующую конфигурацию JNDI/прослушивателя) или грязную сборку (например, дубликаты библиотек). Проверка проблемы с конфигурацией CDI и полная очистка/перестройка должны решить проблему.

По крайней мере, OmniFaces 2.2 или новее технически несовместимы с TomEE 1.x, поскольку Tomice 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, вам необходимо перейти на Tomice 7.x.

Смежные вопросы