Poniższa procedura dotyczy JBoss AS 7.2+, JBoss EAP 6.1+ i JBoss JBoss Application Server 8+ i zakłada, że masz pełną kontrolę nad instalacją i konfiguracją serwera. Ten uaktualnia domyślną wersję JSF całego serwera:
- pobrać poszczególne Mojarra API i impl plików (a zatem nie pojedynczy
javax.faces.jar
pliku). Aktualna wersja 2.1.x to 2.1.29, a aktualna najnowsza wersja 2.2.x to 2.2.14. Załóżmy, że chcesz dokonać aktualizacji do wersji 2.2.x. Można je pobrać z ich indywidualnie repozytorium Maven:
- Upewnij się, że JBoss jest wyłączony.
- Aktualizacja JSF API w
/modules/system/layers/base/javax/faces/api/main
:
- Usuń lub backup stary plik JAR (nie przechowywać go w tym samym folderze, nawet nie zmieniona!).
- Umieść tam plik
jsf-api-2.2.14.jar
.
- Otwarte
module.xml
plik i edytować <resource-root>
aby określić nową nazwę pliku jak w <resource-root path="jsf-api-2.2.14.jar"/>
- Aktualizacja JSF IMPL w
/modules/system/layers/base/com/sun/jsf-impl/main
:
- Usuń lub backup stary plik JAR (nie przechowywać go w taki sam folder, nawet nie zmieniono nazwy!).
- Umieść tam plik
jsf-impl-2.2.14.jar
.
- Otwarte
module.xml
plik i edytować <resource-root>
aby określić nową nazwę pliku jak w <resource-root path="jsf-impl-2.2.14.jar"/>
danych
- Cleanup JBoss cache/działać tak, aby upewnić się, że nie ma stary egzemplarz słoi z poprzednich wdrożeń wisi tam, które tylko potencjalnie kolidować z nowymi JAR:
- Trash całą zawartość
/standalone/data
(z wyjątkiem folderów niestandardowych danych, takich jak folder zawierający pliki przesłane, oczywiście)
- kosza Cała zawartość
/standalone/deployments
- Trash cała zawartość
/standalone/tmp
- start JBoss. Powinien teraz używać nowej wersji JSF do wszystkich wdrożeń.
Taką samą procedurę stosuje się do JBoss AS 7.0/7.1 i JBoss EAP 6.0, trzeba tylko przeglądać w /modules/*
zamiast /modules/system/layers/base/*
i trzeba jawnie usuwać tam starą .index
pliku, jeśli w ogóle (JBoss utworzy jedno). Ponadto, jeśli katalog module.xml
w interfejsie API brakuje <module name="com.sun.jsf-impl"/>
wewnątrz <dependencies>
, musisz go ręcznie dodać.
Ważna informacja jest taka, że wersje Mojarra 2.2.x starsze niż 2.2.7 ulegną awarii w AS/EAP podczas wdrażania z następującym wyjątkiem: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.faces.flow.builder.FlowDefinition
. Zasadniczo masz 2 opcje: obniżenie wersji do wersji 2.1.x lub uaktualnienie do wersji co najmniej 2.2.7 lub nowszej.
W przypadku chcesz uaktualnić do Mojarra 2.3, który nie oferuje wariant 2-JAR już na Maven, to trzeba ręcznie utworzyć wariant 2-JAR na podstawie javax.faces.jar
pliku, jak na ta procedura: How to install one jar variant of JSF (javax.faces.jar) on WildFly.
Co za czysty zestaw instrukcji. Zadziałało. Dziękuję Ci! – user2172625
Nie ma za co. – BalusC
Mam następujące instrukcje, ale ja po uruchomieniu serwera jboss7.1 otrzymuję błąd krytyczny podczas wdrażania:: java.lang.NoClassDefFoundError: com/sun/faces/spi/InjectionProvider, wszelkie wskazówki? – simonC