JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML) Boutin Benoit, Jean Simon, Luit Dimitri
Maverick Avantages : Simple à utiliser (1 seul fichier xml pour gérer les vues et les commandes) Permet d'utiliser des technologies de transformation
Maverick Inconvénients : Abandonné depuis plusieurs années par les développeurs Peu de ressources sur Internet Pas de « vrai » tutorial Pas de gestion complexe des vues et des controleurs Compatibilité
Mise en place de Maverick Fichier web.xml : <servlet> <display-name>Maverick Dispatcher</display-name> <servlet-name>dispatcher</servlet-name> <servlet-lass> org.infohazard.maverick.Dispatcher </servlet-class> <init-param> <!-- Optionnel --> <param-name>reloadCommand</param-name> <param-value>reload</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <url-pattern>*.m</url-pattern> </servlet-mapping>
Mise en place de Maverick Fichier maverick.xml : <?xml version="1.0" encoding="UTF-8"?> <maverick version="2.0" default-view-type="document" default-transform-type="document"> <views> <view id="test" path="test.jsp" /> <view id="test2" path="test2.jsp" /> </views> <commands> <command name="identifier"> <controller class="controller.IdentificationController" /> <view name="utilisateur" path="accueil.jsp"> <transform path="generalInterieur.jsp" /> </view> <view name="administrateur" path="accueilAdmin.jsp"> <transform path="adminInterieur.jsp" /> <view name="error" path="erreur.jsp"> <transform path="generalExterieur.jsp" /> </command> </commands>
Mise en place de Maverick Ajouter maverick.jar dans lib de WEB-INF. Ajouter jdom.jar dans lib de WEB-INF. Ajouter commons-logging-1.0.3 dans lib de WEB-INF. Ajouter maverick.xml dans WEB-INF.
Avant d'utiliser Maverick L'objet Dispatcher gère les appels aux commandes Pour utiliser une commande, il faut la suffixer avec .m Pour les transformations de jsp. Si l'on utilise la directive : <c:out value="${wrapped}" escapeXml="false" />. Modifier la valeur de version dans web.xml à la valeur 2.3. Sinon erreur du fichier tld. Selon les utilisations, il peut être necessaire d'utiliser les jar suivants : commons-logging-1.0.3.jar, jdom.jar commons-beanutils.jar, commons-collections.jar.
JiBX Avantages Permet de passer du java au xml et inversement facilement une fois installé Performant Documentation suffisante
JiBX Inconvénients Difficultés d'installation Modification des classes implique de refaire le binding.
JiBX Fonctionnement en 2 phases : Binding : Runtime : Génération des fichiers .java et du fichier binding.xml à partir d'un schéma xml. Runtime : Instanciation des objets Java à partir d'un fichier xml. Création d'un fichier xml à partir des informations des objets Java.
Mise en place de JiBX Plugin Eclipse (difficulté à comprendre l'utilisation) Utilisation de JiBX depuis le zip téléchargé
Mise en place de JiBX Créer un fichier xsd. Commande java -cp jibx-tools.jar org.jibx.schema.codegen.CodeGen fichier.xsd crée les classes Java et binding.xml javac *.java compile les classes générées. java -jar jibx-bind.jar binding.xml crée les .class nécessaire au fonctionnement de JiBX en Runtime. On peut maintenant utiliser le Runtime.
Mise en place de JiBX public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; } public class Person { public int customerNumber; public String firstName; public String lastName; }
Mise en place de JiBX Binding.xml : <?xml version="1.0" encoding="UTF-8"?> <binding> <mapping name="customer" class="Customer"> <structure name="person" field="person"> <value name="cust-num" field="customerNumber"/> <value name="first-name" field="firstName" /> <value name="last-name" field="lastName" /> </structure> <value name="street" field="street" /> <value name="city" field="city" /> <value name="state" field="state" /> <value name="zip" field="zip" /> <value name="phone" field="phone" /> </mapping> </binding>
Mise en place de JiBX Fichier utilisé au lancement : <?xml version="1.0" encoding="UTF-8"?> <customer> <person> <cust-num>123456789</cust-num> <first-name>John</first-name> <last-name>Smith</last-name> </person> <street>12345 Happy Lane</street> <city>Plunk</city> <state>WA</state> <zip>98059</zip> <phone>888.555.1234</phone> </customer>
Avant d'utiliser JiBX Sans le plugin Eclipse : peu pratique. Erreurs particulières : Cannot cast from java.util.List<Utilisateur> to java.util.List<Utilisateur> Obliger de passer par un objet intermédiaire. Constaté lors de l'utilisation d'ArrayList.