Présentation des frameworks pour Java EE Tapestry (MVC) et JAXB (Persistance en XML) Christopher BIGOZZI, Raouda MCHAREK, Samir SADROUDINE
Sommaire Pré-requis Tapestry JAXB Cas d’étude
Pré-requis Connaissance de Java Connaissance des fondements du web (HTML,HTTP) Connaissance des technologies de J2EE (Servlet et balises personnalisées) Connaissance des architectures des serveurs web
Tapestry Qu’est-ce que Tapestry ? Fonctionnalités de Tapestry Avantages et inconvénients de Tapestry Installation de Tapestry Application de Tapestry
Qu’est-ce que Tapestry? utilisation XML pour implémenter des applications Web en suivant le motif de conception MVC projet intégré par la fondation Apache comme sous-projet Jakarta.. http://tapestry.apache.org/ Mapping objet/relationnel décrit la technique consistant à faire le lien entre la représentation objet des données et sa représentation relationnelle, basé sur un schéma SQL.
Avantages et inconvénients Rapidité de développement, configuration minimale et URLs claires Prise en charge de nombreuses problématiques permettant au développeur de se concentrer sur la partie métier Séparation complète de la présentation HTML du code Java Souplesse d’utilisation (développement de ses propres composants) Facilité d’intégration avec Hibernate et Spring. Inconvénients : Absence de mapping relationnel spécifique : il faut utiliser JDBC ou Hibernate Masquage de nombreux mécanismes web Manque de maturité (composants incomplets, communauté limitée, documentation et tutoriaux insuffisants). Pas de rétro-compatibilité avec la version 4.
Installation de Tapestry Tapestry n’est pas un simple plugin de Eclipse, mais une librairie qu’il faut configurer Il suffit de mettre les .jar dans le dossier : WEB-INF/lib
Application de Tapestry 2 types de fichiers qui sont liés: Logique (.java) : code métier de la page Graphique (.tml ou .html) : vue de la page Accueil.tml Accueil.java
Fonctionnement accueil .tml <t:form t:id="loginForm"> <t:textfield t:value="message"/> <input type="submit" value="Submit"/> </t:form> accueil. java @OnEvent(value="submit", component="loginForm") void onFormSubmit() { System.out.println("Handling form submission!"); }
t:validate=required Spécification dans le fichier app.Property
JAXB (Java Architecture for XML Binding) Qu’est-ce que JAXB ? Installation de JAXB Fonctionnement de JAXB Avantages et inconvénients de JAXB Application de JAXB
Qu’est-ce que JAXB ? librairie Java implémentée par SUN pour générer du Code Java depuis un fichier XML et inversement Site de référence: https://jaxb.dev.java.net/ API Java permettant de créer des classes Java à partir de Schémas (.XSD) et inversement
Fonctionnalités de JAXB Data Binding : automatiser la transformation d'un modèle de données en un modèle de données objets dans un langage de programmation 3 étapes: Génération de classes Rassemblement des données Redistribution des données Objectif final : mise en correspondance automatique entre une famille de documents XML et un schéma de classes Java.
Installation de JAXB Installation du plugin XJC de Eclipse Télécharger le plugin à cette adresse : https://jaxb-workshop.dev.java.net/plugins/eclipse/xjc-plugin.html Le placer dans le dossier /plugins/ de Eclipse Faire la commande ‘eclipse.exe - clean’ pour prendre en compte les nouveaux plugins Créer un schéma fichier.xsd décrivant les données Puis clic bouton-droit sur le fichier Normalement une nouvelle option est apparue : JAXB 2.0. L’installation du plugin a été faite correctement
Fonctionnement général
1ière étape : création de classes Création d’un .xsd Lancer JAXB en utilisant eclipse Création de n fichiers : Des .java Une fabrique, permet d’instancier les objets
2ième étape : Marshalling Génération d’un fichier XML depuis des objets JAVA Création d’un contexte et indication du package source JAXBContext jaxbContext=JAXBContext.newInstance(Projet.class); Création d’un « marshaller » Marshaller marshaller=jaxbContext.createMarshaller(); Génération du XML marshaller.marshal(projet, new FileOutputStream(emplacement)); Le XML est crée
3ième étape : Unmarshalling Génération des objets JAVA depuis un XML Création d’un contexte et indication du package source JAXBContext jaxbContext=JAXBContext.newInstance(« Contacts_JAXB »); Créer un « unmarshaller » sur le contexte Unmarshaller unmarshaller=jaxbContext.createUnmarshaller(); Création de l’objet Projet projet = (Projet)unmarshaller.unmarshal(emplacement);
Avantages et inconvénients de JAXB Lire et écrire dans une vaste gamme de type d'entrée/sortie (Fichier, Flux, Noeud Dom ...etc...) Facilité d'utilisation Inconvénients : Utilisation d'annotations, ce qui oblige a altérer les classes d'origines Reformatage des classes pour avoir soit des méthodes get/set annotées ou des variables annotées
Comparaison avec d’autres Frameworks Même utilisation que JAXP (SAX et DOM), mais niveau d’abstraction plus élevé, plus rapide Nécessité d’installer des grosses librairies à l’inverse de Frameworks comme Castor
CONCLUSION Documentation difficile à trouver On a pu travaillé notre anglais ;) Prise en main difficile malgré la simplicité apparente d’utilisation