Вы можете загрузить несколько JSF войн в одном загрузчике классов? - PullRequest
2 голосов
/ 09 апреля 2010

У меня есть 3 файла war с установленным JSF, конфигурация с 3 гранями, когда я заставляю их всех загружаться в один загрузчик классов, который является частью EAR, происходит сбой при ошибках инициализации. как ниже. Похоже, JSF не любит загружать несколько раз в одном загрузчике классов, кто-нибудь пробовал это? загрузить EAR с 3 JSF войнами?

java.lang.NullPointerException
    at com.sun.faces.config.processor.ManagedBeanConfigProcessor.process(ManagedBeanConfigProcessor.java:241)
    at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:108) 

1 Ответ

2 голосов
/ 09 апреля 2010

Это конкретное исключение может быть вызвано отсутствующим файлом jsf-api.jar в пути к классам или другой версией jsf-api.jar в пути к классам, в отличие от jsf-impl.jar WAR, возможно, предоставленного приложением-сервером. В теории есть 3 способа решить эту проблему:

  1. Избавьтесь от всех JAR-файлов JSF (jsf-api.jar и jsf-impl.jar) в WAR и используйте библиотеки JSF, предоставляемые сервером приложений.
  2. Избавьтесь от всех JSF JAR в WAR и предоставьте их только в EAR.
  3. Выровняйте все JAR-файлы JSF в WAR, чтобы они имели одинаковую марку / версию / сборку.

Другая причина может заключаться в том, что WAR включает в себя специфичные для appserver библиотеки, которые, в свою очередь, содержат классы JSF, такие как Glassfish javaee.jar. Все эти специфичные для appserver библиотеки должны быть удалены из всех WAR и EAR.

Кстати, содержите путь к классам в чистоте.

...