Ниже процедура применяется к JBoss AS 7.2+, JBoss EAP 6.1+ и JBoss WildFly 8+ и предполагает, что вы имеете полный контроль над установкой и настройкой сервера. Это модернизирует общесерверный по умолчанию версии с JSF:
- Скачать отдельный Mojarra API и impl файлы (и, следовательно, не единственный
javax.faces.jar
файла). Текущая версия 2.1.x - 2.1.29, а текущая версия 2.2.x - 2.2.14. Предположим, что вы хотите перейти на 2.2.x. Вы можете скачать их по отдельности из их репозитория Maven:
- Убедитесь, что JBoss отключен.
- Update JSF API в
/modules/system/layers/base/javax/faces/api/main
:
- Удалить или резервную копию старого JAR-файл (не держите его в той же папке, даже не переименовывается!).
- Пустой
jsf-api-2.2.14.jar
файл.
- Открыть
module.xml
файл и редактировать <resource-root>
указать новое имя файла, как в <resource-root path="jsf-api-2.2.14.jar"/>
- Update JSF осущ в
/modules/system/layers/base/com/sun/jsf-impl/main
:
- Удалить или скопировать старый файл JAR (не держите его в том же папка, даже не переименованная!).
- Включите
jsf-impl-2.2.14.jar
файл.
- Открыть
module.xml
файл и редактировать <resource-root>
указать новое имя файла, как в <resource-root path="jsf-impl-2.2.14.jar"/>
- Очистка JBoss кэш/рабочих данных, просто чтобы убедиться, что нет старой копии баночки из предыдущих внедрений висит там, которые бы потенциально только сталкивается с новыми баночками:
- Мусорных все содержимое
/standalone/data
(кроме папок пользовательских данных, таких как папки, содержащих загружаемые файлы, конечно)
- Trash все содержимого
/standalone/deployments
- Trash все содержимое
/standalone/tmp
- Start JBoss. Теперь он должен использовать новую версию JSF для всех развертываний.
Та же процедура применяется к JBoss AS 7.0/7.1 и JBoss EAP 6.0, вам нужно только просматривать в /modules/*
вместо /modules/system/layers/base/*
, и вам нужно явно удалить старый .index
файл существует, если таковые имеются (JBoss автоматически создаст его). Кроме того, если module.xml
в папке API пропускает <module name="com.sun.jsf-impl"/>
внутри <dependencies>
, вам необходимо его вручную добавить.
Важным моментом является то, что версии Mojarra 2.2.x старше 2.2.7 не будут работать в AS/EAP во время развертывания со следующим исключением: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.faces.flow.builder.FlowDefinition
. Тогда у вас есть в основном 2 варианта: переход на Mojarra 2.1.x или обновление до, по крайней мере, 2.2.7 или новее.
В случае, если вы хотите перейти на Mojarra 2.3, который не предлагает вариант с 2-JAR больше на Maven, вам нужно вручную создать вариант 2-JAR на основе javax.faces.jar
файла, как в эта процедура: How to install one jar variant of JSF (javax.faces.jar) on WildFly.
Какой чистый набор инструкций. Это сработало. Спасибо! – user2172625
Добро пожаловать. – BalusC
Я рассматривал эту инструкцию, но я, когда запускаю сервер jboss7.1, получаю ошибку Критическая ошибка во время развертывания:: java.lang.NoClassDefFoundError: com/sun/faces/spi/InjectionProvider, любые подсказки? – simonC