Mojarra dans GlassFish
Pour faire les manipulations qui suivent vous devez avoir au moins un projet NetBeans qui utilise JSF. Si ça n'est pas le cas, voici comment en créer un :
- Lancez NetBeans
- Menu File > New Project. Choisissez la catégorie Java Web et "Web Application".
- Bouton Next ; laissez le nom du projet donné par NetBeans ;
- Bouton Next ; laissez les valeurs données par NetBeans ;
- Bouton Next ; cochez JavaServer Faces ;
- Bouton Finish.
Tout d'abord il faut s'assurer que vous n'avez pas déjà la dernière version de Mojarra :
- Lancez GlassFish dans NetBeans : onglet "Services" dans la colonne de gauche (à côté de "Projects" et "Files"). "Servers" puis "GlassFish Server" (ou quelque chose comme ça). Puis "Start". Le démarrage de GlassFish peut être long... Un onglet "GlassFish Server" doit s'ouvrir dans la fenêtre "Ouput" en bas à droite de la fenêtre de NetBeans.
- Cliquez sur l'onglet "GlassFish Server" ; les messages (logs) doivent s'afficher. Quand tout est calme (ça peut prendre plusieurs minutes si vous avez déjà déployé des grosses applications), dans cet onglet, faites une recherche de "Mojarra" (Ctrl-F sous Windows). Vous allez trouver une ligne "INFO: Initialisation de Mojarra 2.x.y...".
Une autre manière d'avoir la version de Mojarra avec un tout petit peu de programmation : dans le fichier index.xhtml (ou la page de lancement de l'application) d'un projet JSF ajoutez ceci après <h:body> : #{facesContext.class.package.implementationVersion}
Lancez ensuite le projet et vous devriez voir affichée la version, par exemple "2.2.6".
La dernière version de Mojarra se trouve à l’adresse https://javaserverfaces.java.net/. Le numéro de la dernière version est sans doute affichée dans les "Latest News" ; par exemple, "March 4th, 2014 Mojarra 2.2.6 released". Si vous avez bien cette version, la suite de cette page ne vous concerne pas.
Changer la version de Mojarra utilisée par GlassFish
L'exemple suppose que GlassFish est installé sous Windows.
- Récupérer la dernière version de Mojarra à l’adresse https://javaserverfaces.java.net/, appelons-la javax.faces-2.2.6.jar
- Fermer GlassFish s’il est en marche.
- Aller dans le répertoire modules de GlassFish (disons C:\Program Files\glassfish-4.0\glassfish\modules)
- Copiez le fichier javax.faces.jar ailleurs (pour le cas où la suite se passerait mal)
- Remplacer le fichier javax.faces.jar par le fichier jar de la dernière version de Mojarra (javax.faces-2.2.6.jar pour notre exemple) en le renommant javax.faces.jar
- Lancer GlassFish ; dans les logs devrait apparaître une ligne
INFO: Updated bundle 196 from /C:/Program Files/glassfish-4.0/glassfish/modules/javax.faces.jar
et une ligne
INFO: Initialisation de Mojarra 2.2.6
Pour moi cette façon de faire a toujours fonctionné.
Si cette procédure ne marche pas, c'est sans doute parce que l'ancienne version de Mojarra est restée dans le cache de OSGI (utilisé pour construire Felix). Recommencez en ajoutant une étape juste après l'étape 4 :
4 bis. Vider le cache OSGI du domaine que GlassFish utilise. Il s'agit du répertoire nommé osgi-cache situé juste sous le répertoire du domaine. Il faut supprimer tout ce que contient ce répertoire (un répertoire felix le plus souvent). Le redémarrage de GlassFish sera un peu long car il doit reconstruire Felix, patientez... Si vous êtes prudent, gardez le répertoire felix enlevé de osgi-cache à un autre endroit, mais tout devrait bien se passer.
Pour savoir où se trouve le répertoire du domaine utilisé par GlassFish, aller dans NetBeans et
- Pour avoir le nom du serveur GlassFish utilisé par l'application : Clic bouton droit sur l’application, Properties > Run et lire « Server » pour avoir le nom « NetBeans » du serveur.
- Pour avoir des informations sur le serveur à partir de ce nom « NetBeans » : onglet Services > Servers, clic droit sur le nom et choix Properties Dans l’onglet « Common », champ « Installation Location » on peut lire le domaine utilisé (champ "Domain") et l'emplacement du répertoire des domaines (champ "Domains Folder").