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