Maverick & CookXML. BELKHADRA Sofiane. BERNABE Thomas. RESSE Romain



Documents pareils
Web Tier : déploiement de servlets

Création d un service web avec NetBeans 5.5 et SJAS 9

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Documentation CAS à destination des éditeurs

Tutoriel d installation de Hibernate avec Eclipse

Un ordonnanceur stupide

Application web de gestion de comptes en banques

Aspects techniques : guide d interfaçage SSO

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Création d une application JEE

Programmation Objet Java Correction

Architecture Orientée Service, JSON et API REST

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

JavaServer Pages (JSP)

Gestion distribuée (par sockets) de banque en Java

Une introduction à la technologie EJB (2/3)

Développement Logiciel

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

La gestion des exceptions

Etude de cas : PGE JEE V2

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TD/TP PAC - Programmation n 3

Programmation Par Objets

La base de données XML exist. A. Belaïd

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Auto-évaluation Programmation en Java

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation MacOSX / ios

Le stockage local de données en HTML5

Programmer en JAVA. par Tama

Package Java.util Classe générique

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Description de la maquette fonctionnelle. Nombre de pages :

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Projet Java EE Approfondi

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Projet de Java Enterprise Edition

Recycle Bin (Corbeille Active directory)

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Intégration d'un moteur de workflow dans le SI : Dématérialisation des Ordres de misson

Remote Method Invocation (RMI)

Arbres binaires de recherche

Applet pour visualiser les variables «automate» notifiées

Cours 1: Java et les objets

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

A. Architecture du serveur Tomcat 6

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Groupe Eyrolles, 2005, ISBN :

TD/TP PAC - Programmation n 3

Maîtriser le menu contextuel dans un OfficeBean

Application Web et J2EE

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

Travaux Pratiques : Lucène - Gestion d un index plein texte

Construire des plug-ins pour SAS Management Console SAS 9.1

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

Tp 1 correction. Structures de données (IF2)

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

DOMAIN NAME SYSTEM. CAILLET Mélanie. Tutoriel sur le DNS. Session Option SISR

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Synchro et Threads Java TM

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Création d objet imbriqué sous PowerShell.

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Formation en Logiciels Libres. Fiche d inscription

Utilisation d objets : String et ArrayList

CAHIER DES CHARGES SITE WEB : Steve Mind Magicien Close-up & Mentaliste - 1 -

TD3: tableaux avancées, première classe et chaînes

TP Programmation Java / JDBC / Oracle

Alfstore workflow framework Spécification technique

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Corrigés des premiers exercices sur les classes

- Rapport de stage Étude de solutions pour l intégration de fonctionnalités

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Administration Centrale : Opérations

2. Comprendre les définitions de classes

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

RAPPORT DE STAGE GWT PRISE EN MAIN SERVLET - TEST DES DAO TELOSYS PLUGIN ECLIPSE WIZARD DATASET TELOSYS

Les structures de données. Rajae El Ouazzani

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Rafraichissement conditionné d'une page en.net

Installation et utilisation du client FirstClass 11

Infrastructure Active Directory en termes de GPO

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Les frameworks au coeur des applications web

Plateforme PAYZEN. Définition de Web-services

Corrigé des exercices sur les références

Transcription:

Maverick & CookXML BELKHADRA Sofiane BERNABE Thomas RESSE Romain

Présentation Etant donné que nous avons déjà fait une présentation succincte des deux frameworks utilisés, nous n allons pas nous étendre de nouveau sur le sujet ; nous parlerons surtout de l utilisation de ces frameworks et des problèmes que nous avons rencontrés. Ce rapport est un complément à la présentation que nous avons faite vendredi 15 mai. Maverick Comme nous l avions dit lors de la présentation, maverick était apparemment un framework simple d utilisation, étant donné qu il suffisait d ajouter le maverick.jar aux librairies web et qu il fallait juste configurer un maverick.xml afin que ce framework fonctionne. Nous nous sommes basés sur l exemple qui était disponible sur le site de maverick, à savoir le friendbook-jsp, permettant de gérer une sorte d annuaire, ou plutôt un réseau social. Malheureusement, ceci n a pas fonctionné pour nous, car nous avons eu un problème directement au niveau de la servlet fournie dans le maverick : la servlet Dispatcher est indisponible.

Cette erreur est revenue sur plusieurs autres groupes. Cependant, chez certains autres, maverick est fonctionnel. A savoir que ces groupes nous ont gracieusement aidé notamment en nous donnant un fichier war de test maverick (test de liens avec maverick, ce programme devait afficher un lien, qui lorsqu il était sélectionné, renvoyait vers un.m qui permettait d obtenir la nouvelle page jsp ), mais cela n a pas fonctionné et nous avons encore une fois rencontré la même erreur De plus, il n existe que très peu de documentation liée à maverick sur le net, vu que ce framework n est pas si utilisé que ça. Effectivement, nous avons activement recherché les erreurs possibles du servlet Dispatcher mais il n y a aucunes réponses viables à ce problème sur internet Suite à cela, nous avons donc décidé de coder nous même nos propres servlets et jsp afin de faire fonctionner le deuxième framework que nous avons choisit : cookxml Voici le code du maverick.xml : <?xml version="1.0"?> <maverick version="2.0" default-view-type="document" default-transform-type="document"> <views> <view id="loginrequired" path="loginrequired.jsp"> </views> <commands> <command name="welcome"> <view path="welcome.jsp"> <command name="loginsubmit"> <controller class="controlleurs.loginsubmit" /> <view name="success" type="redirect"/> <view name="error" path="loginfailed.jsp"> <command name="signup"> <view path="signup.jsp">

<command name="signupsubmit"> <controller class="controlleurs.signupsubmit"/> <view name="success" type="redirect" path="edit.m"/> <view name="error" path="signup.jsp"> <command name="edit"> <controller class="controlleurs.edit"/> <view name="success" path="edit.jsp"> <transform path="triminside.jsp"/> <command name="editsubmit"> <controller class="controlleurs.editsubmit"/> <view name="success" type="redirect" path="friends.m"/> <command name="addfriend"> <controller class="controlleurs.editfriend"/> <view name="success" type="redirect" path="friends.m"/> <command name="changepassword"> <controller class="controlleurs.changepassword"/> <view name="success" path="changepassword.jsp"> <transform path="triminside.jsp"/> <command name="changepasswordsubmit"> <controller class="controlleurs.changepasswordsubmit"/> <view name="success" type="redirect" path="friends.m"/> <view name="error" path="changepassword.jsp"> <transform path="triminside.jsp"/> <command name="logout"> <controller class="controlleurs.logout"/> <view name="success" type="redirect" path="welcome.m"/> <command name="friends"> <controller class="controlleurs.friends"/> <view name="success" path="friends.jsp"> <transform path="triminside.jsp"/> </commands> </maverick>

CookXML CookXML est un framework qui permet de créer des instances de classes java (objets) à partir de xml suivant ses tags. Cependant CookXML ne fonctionne que dans un seul sens, à savoir créer du java objet à partir du xml mais pas l inverse, nous ne pouvions donc pas ajouter les fonctionnalités d ajout, de suppression et de modification d un contact. Voici l arborescence du projet : Nous avons donc importé le package cookxml.jar et nous avons créé un Creator, indispensable à son fonctionnement. La mise en place de cookxml est très simple lorsque l on a compris comment fonctionnaient les creators, adders, setters et converters. Voici le code de la classe Converter : package cookxml; import java.io.ioexception; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import modele.adresse; import modele.annuaire; import modele.contact; import modele.email; import modele.telephone; import modele.user; import modele.utilisateur; import cookxml.core.cookxml; import cookxml.core.adder.defaultadder; import cookxml.core.creator.defaultcreator; import cookxml.core.setter.defaultsetter; import cookxml.core.taglibrary.singlenstaglibrary;

public class Creator { SingleNSTagLibrary libuser; SingleNSTagLibrary libcontact; Annuaire annuaire; User user; public Creator() { SingleNSTagLibrary tagcontact = new SingleNSTagLibrary(); SingleNSTagLibrary taguser = new SingleNSTagLibrary(); tagcontact.setcreator("annuaire", DefaultCreator.getCreator(Annuaire.class)); tagcontact.setcreator("contact", DefaultCreator.getCreator(Contact.class)); tagcontact.setcreator("email", DefaultCreator.getCreator(Email.class)); tagcontact.setcreator("tel", DefaultCreator.getCreator(Telephone.class)); tagcontact.setcreator("adresse", DefaultCreator.getCreator(Adresse.class)); tagcontact.setsetter(null, null, DefaultSetter.getInstance()); tagcontact.setadder(null, DefaultAdder.getInstance()); libcontact = tagcontact; taguser.setcreator("user", DefaultCreator.getCreator(User.class)); taguser.setcreator("utilisateur", DefaultCreator.getCreator(Utilisateur.class)); taguser.setsetter(null, null, DefaultSetter.getInstance()); taguser.setadder(null, DefaultAdder.getInstance()); libuser = taguser; public void createobject() throws IOException { try { DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); CookXml cookxmlcontact = new CookXml(builder, libcontact, (Object) null); annuaire = (Annuaire) cookxmlcontact.xmldecode("c:\\teste.xml"); CookXml cookxmluser = new CookXml(builder, libuser, (Object) null); user = (User) cookxmluser.xmldecode("c:\\utilisateur.xml"); catch (Exception ex) { ex.printstacktrace(); public Annuaire getannuaire() { return annuaire; public User getuser() { return user; public void afficherannuaire(annuaire annuaire) { System.out.println(annuaire); System.out.println("Nom de l'annuaire : " + annuaire.getname());

for (int i = 0; i < annuaire.getcontactlist().size(); i++) { System.out.println("Annuaire " + i); for (int j = 0; j < annuaire.getcontactlist().get(i).getadresselist().size(); j++) { System.out.println("Valeur de adresse : " + annuaire.getcontactlist().get(i).getadresselist().get(j).getvaleur()); for (int j = 0; j < annuaire.getcontactlist().get(i).getmaillist().size(); j++) { System.out.println("Valeur de mail : " + annuaire.getcontactlist().get(i).getmaillist().get(j).getvaleur()); for (int j = 0; j < annuaire.getcontactlist().get(i).getphonelist().size(); j++) { System.out.println("Valeur de telephone : " + annuaire.getcontactlist().get(i).getphonelist().get(0).getvaleur()); System.out.println("Valeur de nom : " + annuaire.getcontactlist().get(i).getnom()); System.out.println("Valeur de prenom : " + annuaire.getcontactlist().get(i).getprenom()); System.out.println("Valeur de sexe : " + annuaire.getcontactlist().get(i).getsexe()); public void afficheruser(user user){ System.out.println(user); for(int i = 0; i < user.getutililist().size();i++){ System.out.println("Utilisateur " + i); System.out.println("Valeur de log "+user.getutililist().get(i).getlog()); System.out.println("Valeur de pass "+user.getutililist().get(i).getpass()); System.out.println("Valeur de estadmin "+user.getutililist().get(i).getestadmin()); On créé donc des objets à partir des xml grâce à ces caractéristiques de cookxml. Creators : lie le tag du nœud à une classe java. Adders : lie un objet à un autre objet (nœuds imbriqués). Utilise par défaut la méthode add(object objet). Setters : récupère les paramètres des nœuds. Utilise par défaut la méthode setvaleur(). Converters : Nous n en avons pas utilisé, mais ceux-ci servent à convertir certaines informations dont on a besoin, juste en ajoutant un objet de type converter. Il faut tout de même savoir qu il faut une classe java par nœud contenus dans le xml. Il faut de plus que ces classes aient un constructeur vide et une fonction add qui permet d ajouter des objets java. Comme vous l avez vu lors de la présentation, cela fonctionne bien. Le seul problème est celui de la redirection lorsque l on entre un faux couple login/pass

Conclusion Nous avons donc réalisé ce projet en partie, mais ceci ne dépendait pas forcément de notre bon vouloir ; les deux frameworks que nous avons choisit ne sont pas encore finalisés et ne sont pas près de l être vu qu ils sont très peu utilisés et que d autres font bien mieux qu eux tout en étant beaucoup plus simple d utilisation (plus besoin de coder une classe entière par exemple si l on remplace cookxml mais ceci est une autre histoire.). Info importante Placer les test.xml et utilisateur.xml à la racine du disque C:/.