Intégrer la dernière version de mojarra dans un projet dédié à la plateforme google app engine
Dans un --trop ancien-- précédent post, j'ai décrit comment mettre sur GAE par une méthode un peu bourrin qui était de prendre un JAR modifié sur le net, l' importer dans le référentiel et le déclarer dans le fichier pom.Xml
.
En parcourant les forums de primefaces, j'ai découvert une autre méthode un peu plus élégante :
- Télécharger les sources de mojarra ( ici 2.0.03.FCS)
- Créer dans votre projet un package
com.sun.faces.config
- Copier le fichier
WebConfiguration.java
présent dans la distribution précédemment téléchargée - Mettre en commentaire le contenu de la méthode
processJndiEntries
private void processJndiEntries(String contextName) { /* Context initialContext = null; try { initialContext = new InitialContext(); } catch (NamingException ne) { if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log(Level.WARNING, ne.toString(), ne); } } if (initialContext != null) { // process environment entries for (WebEnvironmentEntry entry : WebEnvironmentEntry.values()) { String entryName = entry.getQualifiedName(); String value = null; try { value = (String) initialContext.lookup(entryName); } catch (NamingException root) { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine(root.toString()); } } if (value != null) { if (LOGGER.isLoggable(Level.INFO)) { // special logic for ClientStateSavingPassword if (!entry .equals(WebEnvironmentEntry.ClientStateSavingPassword)) { if (LOGGER .isLoggable(loggingLevel)) { LOGGER.log(loggingLevel, "jsf.config.webconfig.enventryinfo", new Object[]{contextName, entryName, value}); } } else { if (LOGGER .isLoggable(loggingLevel)) { LOGGER.log(loggingLevel, "jsf.config.webconfig.enventry.clientencrypt", contextName); } } } envEntries.put(entry, value); } } } */ }
Il ne reste plus qu'à récupérer les versions souhaitées de JSF via la configuration maven
<profile> <id>mojarra</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <jsfVersion>Mojarra-2.0.3-FCS</jsfVersion> <primefacesVersion>PrimeFaces-2.2.RC1-SNAPSHOT</primefacesVersion> </properties> <dependencies> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>2.2.RC1-SNAPSHOT</version> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.3</version> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.3</version> </dependency> </dependencies> </profile>
Et on arrive à un graphe de dépendance ressemblant à ça :
Le code source de ce projet est disponible sur le site code.google.com : http://code.google.com/p/my-cellar/. Il est sous licence GPLV3.