10_J2ME_XML_
Transcription
10_J2ME_XML_
Java, développement d'applications mobiles (J2ME) XML 21/03/2007 Formation ITIN Rappels rapides XML est un acronyme pour eXtensible Markup Language. Utilisation de tags pour délimiter le contenu et représenter une structure. XML ne définit pas lui-même de tag ou de structure, on peut utiliser ses propres tags dans le document tant que les applications qui communiquent se comprennent. 2 Formation ITIN 21/03/2007 Exemple de fichier XML 3 <breakfast_menu> <food> <name>French Toast</name> <price>$4.50</price> <description> thick slices made from our homemade sourdough bread </description> <calories>600</calories> </food> <food> <name>Homestyle Breakfast</name> <price>$6.95</price> <description> two eggs, bacon or sausage, toast, and our ever-popular hash browns </description> <calories>950</calories> </food> </breakfast_menu> Formation ITIN 21/03/2007 Rappels rapides Les méta-langages à balises existent depuis les années 1970. HTML en est un. Qu’est-ce qui rend XML tant spécial ? • Facilité de construire des données structurées et hiérarchisées. • Avec des technologies comme XML Schema, XML propose le typage fort des données. • Machine et human friendly (syntaxe stricte mais facilement lisible et compréhensible) • Encourage les standards ouverts. 4 Formation ITIN 21/03/2007 XML et les petites configurations Les standards XML sont utilisables avec les plateformes J2SE/J2EE. Cependant, le support avec la plateforme J2ME et tout spécialement CLDC/MIDP n’est pas disponible ou commence tout juste à l’être dur les téléphones. La J2ME Web Services Specification (JSR 172) fournira un jeu d’API pour manipuler des documents XML. 5 Formation ITIN 21/03/2007 XML et les petites configurations Les CDC ont le support complet des librairies Java, il est facile d’utiliser les librairies XML J2SE/J2EE même si des librairies plus légères et plus optimisées sont préférables. Pour les CLDC, on a besoin de libraires spécifiques dédiées aux machines avec faibles ressources. 6 Formation ITIN 21/03/2007 Parseurs XML pour MIDP Nom 7 Version URL Taille MIDP Type kXML 1.21 kxml.enhydra.org 21KB oui model / pull / sax wrapper kXML 2.2.2 kxml.sourceforge.net 9KB oui model / pull MinML 1.7 www.wilson.co.uk/xml/minml.htm 9~14KB non push NanoXML 1.6.8 2.2.3 nanoxml.sourceforge.net 6KB non (de base, oui adapté) model TAM - simonstl.com/projects/tam 17KB oui push TinyXML 2.4.0 http://sourceforge.net/projects/tinyxml/ 6KB non model XMLtp 1.7 mitglied.lycos.de/xmltp 21KB non model Xparse-j 1.1 www.webreference.com/xml/tools/xpa rse-j.html 7KB oui model Formation ITIN 21/03/2007 Parseurs XML pour MIDP Souvent, les documents XML utilisés pour passer l’information n’ont que des éléments et des attributs. Ils ne sont pas (malheureusement) toujours bien formés (tag mal fermés ou mal imbriqués), comme les pages HTML. Les parsers standard ne liront pas ces fichiers 8 Formation ITIN 21/03/2007 Parseurs XML pour MIDP Il existe un parser petit et tolérant qui ne dispose pas de support • • • • pour les namespaces les commentaires les instructions de processing .. La classe XmlReader (empreinte de ~5ko) http://kobjects.sourceforge.net/utils/ 9 Formation ITIN 21/03/2007 Les types de parseurs Il y a trois grands types de parseurs • model : lit le document en entier et en créé un représentation en mémoire. Modèle qui utilise le plus de mémoire. • push (SAX) : lit le document en entier et notifie un listener au fur et à mesure. • pull : ne lit qu’une partie du document à chaque fois. Le document est lu en entier par le parseur, bout par bout. 10 Formation ITIN 21/03/2007 SAX SAX (Simple API for XML) Modèle basé sur les événements Le parser parse l’ensemble du document en une passe linéaire. Quand le parser rencontre une entité XML (tag, attribut, …) il déclenche un événement. 11 Formation ITIN 21/03/2007 Processus de parsing SAX (push) Début Parser Callback 12 Formation ITIN Fin Logique applicative 21/03/2007 SAX SAX est simple à implémenter et très répandu, mais il est distancé par les nouvelles API de parsing basé sur la méthode pull. Le problème de SAX (push) est qu’une fois le parsing commencé, on ne peut pas arrêter après avoir reçu l’information attendue. Les événements sont déclenchés en continus jusqu’à la fin. 13 Formation ITIN 21/03/2007 XMLPull Plus de contrôle sur le process de parsing. Possibilité de l’interrompre et de le reprendre, ou même de le stopper net. kXML v2.0 supporte le l’API XmlPull v1.0 14 Formation ITIN 21/03/2007 Processus de parsing XMLPull Arrêt Début Pull …………… Pull Logique applicative 15 Formation ITIN 21/03/2007 Fin Document Model SAX et XmlPull traitent la structure de données XML comme un flot linéaire. Difficultés à reconstruire un arbre. Le parser document model est généralement un parser SAX ou XmlPull avec un gestionnaire d’événements qui stocke et manipule les informations dans un espace mémoire 16 Formation ITIN 21/03/2007 Processus de parsing SAX (push) Début Parser Fin Structure DOM en mémoire Logique applicative 17 Formation ITIN 21/03/2007 Exemple avec un parseur Pull (kXML) Création du parser Parse l’InputStream et regarde les tags Ouvrant / Fermant 18 Formation ITIN 21/03/2007 Ajout de la librairie kXML au projet NetBeans Propriétés du projet courant 19 Formation ITIN 21/03/2007 Java, développement d'applications mobiles (J2ME) Services web 21/03/2007 Formation ITIN Rappel sur les web services C’est un élément de logique applicative localisé quelque part sur l'Internet accessible via un protocole standard 21 Publication UDDI Description WSDL Message SOAP Transport HTTP, FTP, SMTP Formation ITIN 21/03/2007 Rappel sur les services web Application 4. Génération d’un stub 2. Découverte 5. Requêtes HTTP Processeur SOAP Interface du service 3. Récupération WSDL WSDL Service 1. Enregistrement Registre de services UDDI Annuaire 22 Formation ITIN 21/03/2007 Web services sur les mobiles… … ou comment faire en attendant la JSR 172 En utilisant une librairie qui nous permet de construire et utiliser des messages SOAP. C’est kSOAP 23 Formation ITIN 21/03/2007 kSOAP Les librairies standard (Apache Axis et Java Web SDK) sont trop lourdes kSOAP fonctionne sur les plateformes J2SE et J2ME. Librairie basée sur kXML 42ko mais ne supporte pas toute la spécification SOAP, mais les fonctions les plus courantes. 24 Formation ITIN 21/03/2007 kSOAP Utilisation simple • Préparer les arguments à passer à la méthode distante (instanciation d’un SoapObject et ajout des arguments grâce à la méthode addProperty()) • Préparation de l’appel au transport. Instanciation d’un objet HttpTransport avec l’URL de l’interface SOAP • Faire l’appel distant. Cad passer le SoapObject à l’objet HttpTransport et appeler sa méthode call(). La valeur de retour est le retour du web service. 25 Formation ITIN 21/03/2007 Mise en pratique Utilisation côté serveur de • Tomcat (http://tomcat.apache.org/) • Axis (http://ws.apache.org/axis/) Utilisation côté client • kSOAP (http://sourceforge.net/projects/ksoap2/) 26 Formation ITIN 21/03/2007 Création du web service http://127.0.0.1:8080/axis • http://127.0.0.1:8080/axis/happyaxis.jsp (Pour vérifier qu’Axis est correctement installé) Liste des services installés : 27 Formation ITIN 21/03/2007 Création du web service Le cours ne porte pas sur la création à proprement parler des web services. Nous allons employer une méthode rapide pour en construire un, mais qui n’est pas à utiliser en production ! 28 Formation ITIN 21/03/2007 Création du web service Service qui renvoie une réponse à une question 29 Formation ITIN 21/03/2007 Création du web service Enregistrer le fichier source dans le répertoire webapps\axis, en le renommant VoyanteGratuite.jws Relancer tomcat … … consulter la liste des services disponibles. Rien de plus mais : http://127.0.0.1:8080/axis/VoyanteGratuite.jws 30 Formation ITIN 21/03/2007 Création du web service Indication sur la présence de notre WS Axis a généré le WSDL 31 Formation ITIN 21/03/2007 Création du web service Fichier WSDL généré par Axis 32 Formation ITIN 21/03/2007 Création du client Ajout de la librairie kSOAP au projet Netbeans Réalisation des étapes décrites plus haut : 33 Formation ITIN 21/03/2007