1 / 37

Makumba & xmlbeans

JEE Approfondi. Makumba & xmlbeans. Plan. I- Makumba Introduction Installation Exemple Test II- XMLBeans Introduction Installation Exemple Test. Makumba. Makumba - Introduction. Conception en 2001 par une association d’étudiants Basé sur le design pattern MVC

Download Presentation

Makumba & xmlbeans

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JEE Approfondi Makumba&xmlbeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  2. Plan I- Makumba • Introduction • Installation • Exemple • Test II- XMLBeans • Introduction • Installation • Exemple • Test Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  3. Makumba Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  4. Makumba- Introduction • Conception en 2001 par une association d’étudiants • Basé sur le design pattern MVC • Librairie de tags JSP => facilite l’interaction entre l’application et la BDD associée Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  5. Makumba - Installation • Outils nécessaires : • Makumba ! • Un conteneur de servlets JEE • Un serveur SQL • Un driver JDBC • ANTLR : Another Tool for Language Recognition Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  6. Makumba - Exemple • Arborescence du projet File > New > Dynamic Web Projet monProjet/ WEB-INF/ lib/ classes/ web.xml Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  7. Makumba - Exemple • Ajout des librairies (sous Eclipse) Clic droit sur le projet > Build Path > Configure Build Path > Onglet Librairies > Add External JARs • makumba.jar • antlr-?.?.?.jar • mysql-connector-java-?.?.?-bin.jar Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  8. Makumba - Exemple • Configuration du web.xml Le fichier est déjà fait si on utilise Tomcat : • Aller sur : http://www.makumba.org/makumba-install.html • Récupérer le web.xml dans la partie « Deployment Descriptor » Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  9. Makumba - Exemple • Fichiers de configuration BDD (1/2) monProjet/WEB-INF/classes/localhost_mysql_maBDD.properties Clic droit sur le dossier classes > New > File maBDD est le nom de la base de données • # Nom d’utilisateur pour se connecter à la BDD • sql.user=root • # Mot de passe • sql.password= • # AutoriserMakumba à modifier la BDD • alter#=true Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  10. Makumba - Exemple • Fichiers de configuration BDD (2/2) monProjet/WEB-INF/classes/MakumbaDatabase.properties Clic droit sur le dossier classes > New > File • #Base de données par défaut • default=localhost_mysql_monProjet Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  11. Makumba - Exemple • Définition des données monProjet/WEB-INF/classes/dataDefinitions/*.mdd • Créer un dossier nommé « dataDefinitions » dans le dossier « classes » • Créer un fichier nomTable.mdd par table existante • # Personne.mdd • # Fichier de description pour la table Personne • nom=not null char[32] ; • age=not null int ; Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  12. Makumba - Exemple • Application monProjet/WEB-INF/index.jsp • Clic droit sur monProjet > New > JSP > index.jsp Les balises « mak » permettent d’agir sur la BDD et d’y récupérer des données. • <%@tagliburi="http://www.makumba.org/presentation" prefix="mak" %> • <mak:listfrom="Person p">   •  <mak:valueexpr="p.name"/>, • <mak:valueexpr="p.age"/> • </mak:list> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  13. Makumba - Test • Après l’installation on lance la jsp et on obtient une erreur de lancement du serveur Tomcat : java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: java.lang.SecurityException: La servlet de classe org.apache.catalina.servlets.InvokerServlet est privil�gi�e (privileged) et ne peut �tre charg� par cette application web at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1145) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) ... 6 more Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  14. Makumba - Test • La configuration de Tomcat ne convient pas à Makumba ! • Dans le répertoire d’installation de tomcat, trouver le fichier context.xml dans le répertoire conf • Ajouter l’attribut « privileged=¨true¨ » à la balise <context> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  15. Makumba - Test On supprime la configuration de tomcat sous Eclipse et on relance la page jsp. On obtient cette fois : org.makumba.commons.RuntimeWrappedException: java.lang.NoClassDefFoundError: ch/ubique/inieditor/IniEditor Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  16. Makumba - Test • En fait il manque toutes les autres librairies extérieures • On peut les trouver dans la version sources de makumba et il faut les ajouter toutes sauf « jsp-api.jar » car Tomcat inclut déjà cette librairie dans la version 6 Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  17. Makumba - Test • Ca fonctionne enfin ! • Une table person_ est créée. • Si on insère des champs il seront listés par la JSP. Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  18. Makumba - Test • Structure de la table auto créée Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  19. Makumba - Test • Un autre exemple <mak:newForm> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  20. Makumba - Test • <mak:editForm> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  21. xmlbeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  22. Xmlbeans - introduction • Conception en 2003 par Apache • Permet le databinding Java/XML • Travail à partir des schémas XSD Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  23. Xmlbeans - installation • Outils nécessaires • JDK (minimum 1.4) • ANT • Saxon XSLT et XQuery • XMLBeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  24. Xmlbeans - installation • Variables d’environnement – Windows (1/3) (après avoir téléchargé et dézippéXMLBeans) Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  25. Xmlbeans - installation • Variables d’environnement – Windows (2/3) (après avoir téléchargé et dézippéXMLBeans) Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  26. Xmlbeans - installation • Variables d’environnement – Windows (3/3) (après avoir téléchargé et dézippéXMLBeans) Pour la V2 de XMLBeans, il faut également ajouter jsr173_1.0_api.jar Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  27. Xmlbeans - installation • Variables d’environnement – Linux (après avoir téléchargé et dézippéXMLBeans) • export XMLBEANS_HOME = « chemin » • export PATH=$PATH:$XMLBEANS_HOME/bin • export CLASSPATH=$XMLBEANS_HOME/lib/xbean.jar:$CLASSPATH • For XMLBeans V2, export CLASSPATH=$CLASSPATH:$XMLBEANS_HOME/lib/jsr173[_1.0]_api.jar Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  28. Xmlbeans - installation • Ajout des librairies au projet (Eclipse) • Toutes les librairies se trouvant dans le répertoire lib du dossier xmlbeans sauf xmlpublic.jar • Pour une compatibilité XPath/XQuery, ajouter les librairies de saxon. • Les librairies obtenues après génération des classes (cfslide suivant). Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  29. Xmlbeans - exemple • Génération des classes : 1ère méthode • Elle se fait à partir d’un schéma XSD • Création d’une tâche ANT (build.xml) : L’archive mesSchemas.jar est à placer dans le buildpath du projet. <?xml version="1.0" encoding="UTF-8" ?>   <projectname= " monProjet" default="xmlbean" basedir=".">       <propertyname="xmlbeans.home" value="." />       <propertyname="schema" value="schema/monSchema.xsd" />       <propertyname="dest.jar" value="dest/mesSchemas.jar" />       <path id="xmlbeans.path">         <filesetdir="${xmlbeans.home}/lib"   includes="*.jar"/>       </path>       <taskdefname="xmlbean"  classname="org.apache.xmlbeans.impl.tool.XMLBean"   classpathref="xmlbeans.path"    />       <targetname="xmlbean">          <xmlbeanschema="${schema}"   srcgendir="src"   destfile="${dest.jar}"   classpathref="xmlbeans.path" />       </target>   </project>   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  30. Xmlbeans - exemple • Génération des classes : 2ème méthode • Elle se fait à partir d’un schéma XSD • Utilisation de la commande SCOMP test.jar : version compilée à ajouter aux librairies du projet src contient les classes Java non compilées Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  31. Xmlbeans - exemple • Problème avec Eclipse Si vous utilisez XMLBeans avec Eclipse et Apache Tomcat, et que vous obtenez l’erreur : ExceptionClassNotFound « Impossible de compiler la page », il faut faire : Clic droit sur le projet > Propriétés > Java EE Module Dependencies Il faut cocher toutes les cases. Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  32. Xmlbeans - exemple • Génération d’un fichier XML // import des classes Java générées précédemment public class GenerationXML {          public static void main(String[] args) throws IOException{                                ParcautomobileDocument parc =  ParcautomobileDocument.Factory.newInstance();               Parcautomobile parcautomobile =  parc.addNewParcautomobile();               Vehicule vehicule1 = parcautomobile.addNewVehicule();                                      vehicule1.setModele(Modele.COUPE);               Marque marque1 = vehicule1.addNewMarque();               marque1.setNom(Nom.RENAULT);               boolean estValide = parc.validate();  XmlOptions opts = new XmlOptions();                           opts.setSavePrettyPrint();                             System.out.println(parc.xmlText(opts));                parc.save(new File ("d:/parcAuto.xml"), opts);    } <?xml version="1.0" encoding="UTF-8"?>   <parcautomobile>     <vehicule modele="coupe">           <marque>               <nom>Renault</nom>           </marque>  </vehicule> </parcautomobile> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  33. Xmlbeans - exemple • Parsing d’un fichier XML // import des classes Java générées précédemment public class ParseXML {             public static void main(String[] args) throws Exception        {           //Parsing du fichier XML           ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); Vehicule[] modelesVehicule = parc.getVehiculeArray();     for (Vehicule v : modelesVehicule){                          System.out.println(v.getModele());                         Marque[] lesMarques =  v.getMarqueArray();                 for (Marque m : lesMarques){                               }   } }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  34. Xmlbeans - exemple • L’interface XMLCursor // import des classes Java générées précédemment public class InsertionXML {             public static void main(String[] args) throws Exception        {           ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); XmlCursor filtreCursor = Parcautomobile.newCursor();       filtreCursor.toNextToken();       filtreCursor.toNextToken();             filtreCursor.beginElement("vehicule");           filtreCursor.insertAttributeWithValue("modele", "sport");   filtreCursor.dispose(); }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  35. Xmlbeans - exemple • XQuery <parcautomobile> <vehicule> <marque> <nom> Peugeot </nom> <nombre> 7 </nombre> </marque> </vehicule> </parcautomobile> // import des classes Java générées précédemment public class XQueryXML {             public static void main(String[] args) throws Exception        {           ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); String requete = "for $e in //parcautomobile/vehicule/marque " +                    "where $e/nom = 'Peugeot' " +                    "return $e//nombre";   XmlCursor monCursor1 = parcautomobile.newCursor().execQuery(requete);   System.out.println(monCursor1.getObject().toString());            System.out.println("Expression 1 : le nombre de vehicules de marque Peugeot est : " + monCursor1.getTextValue());   }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  36. Xmlbeans - exemple • XPath <parcautomobile> <vehicule> <marque> <nom> Peugeot </nom> <nombre> 7 </nombre> </marque> </vehicule> </parcautomobile> // import des classes Java générées précédemment public class XPathXML {             public static void main(String[] args) throws Exception        {           ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); XmlCursor monCursor = Parcautomobile.newCursor();            monCursor.toFirstChild();             monCursor.selectPath("$this//marque//nom");                                      while (monCursor.toNextSelection()) {                System.out.println(monCursor.getTextValue());               }   }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

  37. Xmlbeans - test Chamilah Ingar - Guillaume Monteil - Cyril Tovena

More Related