La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Présentations similaires


Présentation au sujet: "Chamilah Ingar - Guillaume Monteil - Cyril Tovena"— Transcription de la présentation:

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

2 JEE approfondi - Makumba & XMLBeans
Plan I- Makumba Introduction Installation Exemple Test II- XMLBeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

3 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 : 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= # Autoriser Makumba à 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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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. uri=" prefix="mak" %> <mak:list from="Person p">    <mak:value expr="p.name"/>, <mak:value expr="p.age"/> </mak:list> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

13 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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.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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
Makumba - Test Structure de la table auto créée Chamilah Ingar - Guillaume Monteil - Cyril Tovena

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

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

21 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 (cf slide 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 build path du projet. <?xml version="1.0" encoding="UTF-8" ?>   <project name= " monProjet" default="xmlbean" basedir=".">       <property name="xmlbeans.home" value="." />       <property name="schema" value="schema/monSchema.xsd" />       <property name="dest.jar" value="dest/mesSchemas.jar" />          <path id="xmlbeans.path">         <fileset dir="${xmlbeans.home}/lib"   includes="*.jar"/>       </path>       <taskdef name="xmlbean"  classname="org.apache.xmlbeans.impl.tool.XMLBean"   classpathref="xmlbeans.path"    />              <target name="xmlbean">          <xmlbean schema="${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
Il faut cocher toutes les cases. 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 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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena
Xmlbeans - test Chamilah Ingar - Guillaume Monteil - Cyril Tovena


Télécharger ppt "Chamilah Ingar - Guillaume Monteil - Cyril Tovena"

Présentations similaires


Annonces Google