Découverte des Framework : SPRING & JAXB

Slides:



Advertisements
Présentations similaires
- Formation STRUTS 1 1.
Advertisements

Master SIR (M2) Année Développement en environnement J2EE de Web services pour l'interopérabilité du projet CASTORE ce stage de fin d’étude a.
Présentation de frameworks J2EE
Java et XML - JAXB Annotations JAXB
Plan Portlets La norme JSR-168 Qu'est-ce qu'une Portlet ?
JEE Approfondi Frameworks Hibernate & Stripes
JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML)
CASTEL Dennis SARZEAUD Floriane TAKAHASHI Atsushi.
Thème 3 : plate-forme de modélisation et de gestion de référentiels XML étapes modélisation des structures (UML) gestion du référentiel de modélisation.
Exposé de Système - Informatique et Réseau
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Projet Webase. I. La définition du projet 1. Lexistant : Webase 4 2. Cahier des charges 3. La répartition des données 4. Le modèle de données 5. Le choix.
Design Pattern MVC En PHP5.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
Gestion de la persistance des objets
Projet J2EE Maverick XMLBeans Garcel Jean-Baptiste – Le Loc Martin – Muller Thibaut.
Présentation des frameworks pour Java EE
Présentation JAXB et STRUTS²
Projet JEE approfondi Stripes / Toplink
PROJET HANDICAPS Certificat de Qualification Professionnelle
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Forum JEE: framework STRUTS 1 et iBATIS
Présentation Installation Fonctionnement
Architectures Web - N-Tiers
Middleware : XML-DBMS Permet de faire office d’interface entre des données XML et des bases de données relationnelles (insertion et récupération de données)
Architectures NTiers Paradigme MVC
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Présentation Struts1-JaxB
JAVASERVER FACES Un framework Java pour le développement Web.
Tapestry - Eclipse Link
Projet JAVA EE Approfondi
Gestion des bases de données
Services fournis par le SI et technologies associées
Développement d’un réseau social professionnel
Création d'un projet Web avec Netbeans
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
Adaptée du cours de Richard Grin
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Patrons de conceptions de créations
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
BOUSQUET Alexis - GUILLEMIN Vincent - PETIT Cédric
LES CLIENTS WEB RICHES Tuteur : Olivier CARON LEFEBVRE Benoit
SOMMAIRE  Introduction  BCO / Toolbox aujourd’hui  Recommandations pour BCO  CRP aujourd’hui  Recommandations pour CRP  La base de données  Recommandations.
19 Mai 2009 CADOT, ROMON, NOEL, GUILLOUET, MONGENET-LAMAISON.
Xooctory.
Xooctory. Plan Présentation du projet Architecture de l'application.
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
AngularJS.
Développement d’application client/serveur
Introduction Présentation Cumgha3 Sommaire 1. Présentation 1.1. Qu’est-ce qu’un CMS? 1.2. Un CMS basé sur XML 1.3. Spécificités et originalités 2. Architecture.
HIBERNATE Mapping Objet / base de données relationnelle
Chapitre 2 Persistance de données De Hibernate au standard JPA 1.0
& J2EE Approfondi Hibernate Struts 2 & Hibernate
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Struts.
Introduction au socle MEAN
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
L’enseignement de spécialité SLAM
EPREUVE E6 : PARCOURS DE PROFESSIONNALISATION
Les Java Server Pages Dans ce chapitre, nous allons :
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Présentation Maverick / CookXML
Transcription de la présentation:

Découverte des Framework : SPRING & JAXB JEE Approfondi Découverte des Framework : SPRING & JAXB LACROIX Aymeric MAHOP Marc MICHELI Vincent NADARADJANE Ravi THOUVENIN Lionel

Présentation SPRING Conteneur léger Modulable Fichier de configuration 3 aspects importants : Pattern IoC Une couche d'abstraction Orienté aspect Spring s'appuie principalement sur l'intégration de trois concepts clés : l'inversion de contrôle ou injection de dépendance ; la programmation orientée aspect ; permet de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une application une couche d'abstraction. La couche d'abstraction permet d'intégrer d'autres frameworks et bibliothèques avec une plus grande facilité.

Présentation SPRING De nombreux apports dont MVC2 Utilisateur Dispatcher Servlet Contrôleur Modèle Vue Il prend donc en charge la création d'objets et la mise en relation d'objets par l'intermédiaire d'un fichier de configuration qui décrit les objets à fabriquer et les relations de dépendances entre ces objets. Le gros avantage par rapport aux serveurs d'application est qu'avec SPRING, vos classes n'ont pas besoin d'implémenter une quelconque interface pour être prises en charge par le framework (au contraire des serveurs d'applications J2EE et des EJBs). C'est en ce sens que SPRING est qualifié de conteneur « léger ». Outre cette espèce de super fabrique d'objets, SPRING propose tout un ensemble d'abstractions permettant de gérer entre autres : Le mode transactionnel L'appel d'EJBs La création d'EJBs La persistance d'objets La création d'une interface Web L'appel et la création de WebServices   Etape 1 : Dispatcher reçoit une requête de type *.htm Etape 2 : Suivant les requêtes => envoie vers un contrôleur et exécute la fonction associée Etape 3 : Le contrôleur renvoie un objet de type ModelandView qui prend en paramètre une vue, un modèle et un message

Présentation JAXB Java Architecture for XML Binding Faciliter la manipulation d'un document XML en générant un ensemble de classes qui fournissent un niveau d'abstraction plus élevé que l'utilisation de SAX ou DOM. Création de schémas XSD Génération des objets Java qui traiteront les feuilles XML Rassemblement des données Redistribution des données analyse un schéma XML et génère à partir de ce dernier un ensemble de classes qui vont encapsuler les traitements de manipulation du document.

Application Schéma XML Binding compiler Classes générées Objets Document XML Document XML API JAXB Marshal Unmarshal Application

Génération d’un fichier XML Lecture d’un fichier XML Redistribution des données/Marshal Génération d’un fichier XML   Création d’une instance JAXBContext jc = JAXBContext.newInstance(SCHEMA_TO_JAVA_DIR); Création d’un marshaller Marshaller m=jc.createMarshaller(); Définition des propriétés (indentation XML,…) m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); Génération du XML : m.marshal(contacts_list, out); Rassemblement des données/Unmarshal Lecture d’un fichier XML Création d'une fabrique : ObjectFactory fabrique = new ObjectFactory(); Dans laquelle on crée un objet JAXBElement<TheForum> contacts_list = of.createForum(forum); La création des objets nécessite la création d'un objet de type JAXBContext en utilisant la méthode statique newInstance(). Cette méthode prend en paramètre le nom du répertoire (ou package) contenant les classes annotées (ici "schema.repertoire") générées avec le compilateur XJC Il faut ensuite instancier un objet de type Unmarshaller qui va permettre de transformer un document XML en un ensemble d'objets. Un telle instance est obtenue en utilisant la méthode createUnmarshaller() de la classe JAXBContext. Ce dernier va vérifier que les données qu'il reçoit sont bien celles attendues. Si ce n'est pas le cas, des exceptions peuvent survenir. La méthode unmarshal() de la classe Unmarshaller se charge de traiter un document XML et retourne un objet du type complexe qui encapsule la racine du document XML JAXBElement. Elle possède de nombreuses surcharges à utiliser en fonction des besoins. Création d’une instance JAXBContext jc = JAXBContext.newInstance(SCHEMA_TO_JAVA_DIR); Création d’un Unmarshaller Unmarshaller u = jc.createUnmarshaller();   Chargement de l’arbre JAXBElement<TheForum> contacts = (JAXBElement<TheForum>) u .unmarshal(new FileInputStream(filename));

Organisation du travail en équipe 1ère étape : 2 groupes 1 sur la découverte de JAXB 1 sur la découverte de SPRING Mise en commun des informations Installation des Framework Développement Comparaison de Framework Guides d’utilisation

Les différentes étapes JAXB Création du XML Création de la XSD Génération des Beans Fonctions Topics Posts Utilisateurs SPRING Mise en place MVC Réalisation des différentes JSP

SPRING/JAXB : Forces & Faiblesses - Développement d’applications web facilement sans EJB - Conteneur léger - Boîte à outils -Fichier de configuration - Manipulation facile des documents XML - Configurable - Remplace une base de données - Génération de classes automatisées - Utilisation d’annotations - Reformatage des classes Spring : Conteneur léger => classes n'ont pas besoin d'implémenter une quelconque interface pour être prises en charge par le framework (au contraire des serveurs d'applications J2EE et des EJBs), permet de l'utiliser facilement sans avoir besoin de configurer, d'installer et de maintenir quoi que ce soit. Boîte à outils => au contraire d'autres frameworks, il vous laisse libre de n'utiliser que l'un ou l'autre de ses modules. Spring propose les services suivants (liste non-exhaustive) : Découplage des composants. Moins d'interdépendances entre les différents modules. Rendre plus aisés les tests des applications complexes c'est-à-dire des applications multicouches. Diminuer la quantité de code par l'intégration de frameworks tiers directement dans Spring. Permettre de mettre en oeuvre facilement la programmation orientée aspect. Un système de transactions au niveau métier qui permet par exemple de faire du "two-phases-commit". Un mécanisme de sécurité. Pas de dépendances dans le code à l'api Spring lors l'utilisation de l'injection. Ce qui permet de remplacer une couche sans impacter les autres. Une implémentation du design pattern MVC Un support du protocole RMI. Tant au niveau serveur qu'au niveau du client. Déployer et consommer des web-services très facilement. Echanger des objets par le protocole http JAXB : facile à utiliser pour consulter et modifier un document XML sans connaissance ni de XML ni de techniques de traitement de documents XML défauts - Utilisation d'annotations, ce qui oblige a alterer les classes d'origines (autrement dit impossible de l'utiliser sur une bibliotheque tierce) - Reformatage des classes pour avoir soit des methodes get/set annotés ou des variables annotées

Comparaison de Framework (1) STRUTS Ressources très nombreuses Communauté très importante SPRING Concept de Vue très général Ne se limite pas seulement à un MVC dans un contexte web Meilleur design MVC Manipulation plus facile Struts permet la structuration d'une application Java sous forme d'un ensemble d'actions représentant des événements déclenchés par les utilisateurs de l'application. Ces actions sont décrites dans un fichier de configuration de type XML décrivant les cheminements possibles entre les différentes actions Struts : demande beaucoup de configuration / Spring Pour SPRING, le "meilleur design" est surtout dû à une meilleure séparation des responsabilités au niveau des différents éléments du MVC. Par exemple, avec SPRING, tu peux aussi faire du Struts, JSF, WebWork, Tapestry, XML, PDF, Excel,...Bref, le concept de vue est très général ce qui permet de mixer plusieurs technos de rendu. Tu bénéficie en plus de l'IoC pour configurer tes objets M et C, c'est donc pas mal. Tu as aussi SPRING WebFlow pour encore mieux travailler sur l'aspect navigation (mais tu n'es pas obligé de l'utiliser) M comme Model (ou comment fonctionne le data binding et la validation): - Struts oblige à étendre une classe concrete ActionForm ce qui interdit la réutilisation de ton domain model et il est donc impossible de travailler directement avec dans ton html. On est obligé de faire le lien entre ActionForm et le domain. - Spring permet de réutiliser le domain model - je ne connais pas trop le fonctionnement des transformations pour des objets autre que des String ou des primitives mais il semble que ce n'est pas très fameux - Spring fournit un support des PropertyEditor (voir norme JavaBeans) - la validation dans l'ActionForm ne la rend pas réutilisable dans le reste de l'appli. La validation peut également se faire avec Commons Validator qui utilise une approche à base de XML mais pour ma part je trouve ca assez peu intuitif (question de gout). - Spring s'appuie sur l'interface Validator pour la validation (des implémentations existent pour utiliser Commons Validator comme dans Struts) V comme Vue : - Struts fournit juste un support pour les JSP (il existe toutefois des librairies externes pour supporter d'autres technos : XML, Velocity) - Spring s'integre avec de nombreuses technos pour la vue : JSP, Velocity, FreeMarker, XML/XSL, Excel, PDF - Spring est facilement extensible et permet d'ajouter très simplement un support pour une autre technologie de présentation en respectant le principe du MVC. C comme controleur : - Les actions Struts (controleurs) doivent être threadsafe dans la mesure ou il n'existe qu'une seule instance de créée - Par défaut, les controleurs de Spring sont uniques (et donc threadsafe) mais la liberté est laissée au développeur de changer ce comportement de manière déclarative - L'ajout de fonctionnalités pour plusieurs controleurs de Struts doit se faire en utilisant l'héritage avec une classe abstraite mutualisant un certain nombre de comportements (manque de flexibilité, cf la deuxieme regle du GoF) - Spring utilise des HandlerInterceptors pour qui ajoute des comportements avant et après l'execution d'un controleur (très flexible car déclaratif) - Spring fournit plusieurs controleurs qui répondent aux cas les plus fréquents (formulaire, wizard, ...) et fournissent de nombreux points d'extensions qui ne laissent pas de doute sur comment bien les utiliser. Autres points dont il faut tenir compte : - Struts se dirige vers une approche plus orienté JSF (Shale) qui n'a plus grand chose à voir avec le Struts d'origine - La branche 1.x ne devrait plus trop évoluée (en dehors de la maintenance) - Personnellement (et je ne suis pas le seul), j'ai du mal à comprendre la stratégie de Struts à long terme - Les ressources sur Struts sont par contre très nombreuses - Spring ne se limite pas à un framework MVC et il y a de grande chance que tu deviennes plus efficace avec Spring MVC si tu l'utilises également pour les autres couches. Trapesty et Spring sont de très bons frameworks, mais ils sont très peu supportés. Il est donc difficile de se lancer dans l’aventure. Struts reste le framework de référence. Très utilisé, il éprouvé depuis un certain temps, même s’il faut fournir un travail plus important qu’avec ses concurrents.

Comparaison de Framework (2) Faciliter la gestion de persistance des données Nécessite des fichiers de configuration et de mapping Simplicité de mise en place Hibernate JAXB Persistance gérée à partir de base de données (SGBD) relationnelle Rendre persistant un objet, c'est sauvegarder les objets existant en mémoire vive sur un support non volatile de telle sorte qu'un objet identique à cet objet pourra être recrée lors d'une session ultérieure. Hibernate apporte une solution aux problèmes d'adaptation entre le paradigme objet et les SGBD en remplaçant les accès à la base de données par des appels à des méthodes objet de haut niveau. Mapping : fichier XML qui fait le lien entre les objets java et la base de données L'adjectif « relationnel » ne fait pas référence ici aux liens entre les tables mais aux tables elles-mêmes. La relation étant un objet mathématique conteneur de données et l'algèbre relationnelle une collection d'opérateurs appliqué aux relations. Le concept permet de stocker et d’organiser de manière structurée et typée une grande quantité d’informations. Les SGBD (Système de Gestion de Base de Données) permettent de naviguer dans ces données et d’extraire (ou de mettre à jour) les informations voulues au moyen de requêtes. Uniquement la manipulation de fichiers XML pour gérer la persistance Manipulation facile des objets : appel à des méthodes de haut niveau pour remplacer les accès à la base de données

Difficultés Mise en place des frameworks Compréhension de SPRING De nombreuses fonctionnalités

Démonstration