Title: XML dans les Serveurs d'applications
1XML dans les Serveurs d'applications
- Serveurs d'applications rappels
- L'interface DOM
- L'interface SAX
- XML, J2EE et .NET
- Conclusion
21. Serveurs d'applications
- Java, un langage portable
- Mais aussi une plate-forme distribuée (J2EE)
- XML est déjà le standard de description des
composants - XML devient le standard de communication
- .Net la plate-forme concurrente de Microsoft
- Avantages de XML
- échange sécurisé sur HTTP
- un message porte plusieurs objets
- interopérabilité des Services Web
Serveurs d'applications
3Architecture dun serveur d appli.
Applications
Client HTML
légataires
(Mainframes)
Outils de développements
Basé composants
Client Java
ooo
Noyau serveur d'applications
Serveur HTTP
Gestionnaire de Composants
Documents
HTML/XML
Autres serveurs
Gestionnaires de Messages
CGI
d'applications
RPC DCE
Client COM
Gestionnaire de Données
RMI
IIOP
Services de Sécurité
Gestionnaire de threads
Gestionnaire de Connexions
Client CORBA
Bases de données
Moniteur Transactions
Files de messages
.
Serveurs d'applications
4Principaux serveurs dapplication
- WebLogic de BEA
- WebSphere Application Server d IBM
- Domino Application Server de Lotus -IBM
- iPlanet Application Server de Sun
- Oracle Application Server
- Sybase Enterprise Application
- TomcatJboss (Open Source)
- TomcatJonas (Open Source)
- Microsoft .NET, Vista Indigo
Serveurs d'applications
5Les dialogues sans XML
Templates HTML (ASP,JSP)
Compilation
Instantiation/Activation
requête
Objets Métiers
Services
invocation
HTML
BD
Transactions/Requêtes
Trois modèles !
Serveurs d'applications
6XML et programme objet
- Les services sont souvent programmés en langage
objet - Java, C, C, VB, PHP ...
- Java
- langage pur objet portable et sûr,
semi-interprété - le compilateur produit un fichier de byte code
par classe - possibilité de chargement dynamique de classe
- support du standard de composants JB et EJB
- XML
- les messages XML doivent être traduits en objets
- différents niveau d'interface
- Flux d'événements (SAX)
- Traduction en objet génériques (DOM)
- Mapping sur objets métiers (Data Binding)
Serveurs d'applications
7XML et les autres langages
- VB, C
- Possibilités similaires à Java (parseurs MS)
- C
- Possibilités similaires à Java (parseurs libres)
- Chargement dynamique de classe impossible
- PHP
- Il existe des parseurs libres
Serveurs d'applications
82. L'interface DOM
- Standard W3C fait pour HTML et XML
- Structure d'objets pour représenter un document
- Résultat d'un "parser"
- Arbre d'objets reliés entre eux
- Interface objet pour naviguer dans un document
- Orientée objet
- Peut être utilisée en
- Java, C
- C, VB
- Python, PHP
DOM
9Principaux parseurs
Document XML
Xerces Apache (Java, C)
MSXML Microsoft
SDK Oracle Oracle
JAXP J2EE Sun, ...
Parseur DOM
Arbre DOM
API DOM
Application
DOM
10Exemple d'arbre DOM
Racine du document
Document
NodeList
ltGuidegt
Element
NodeList
- ltGuidegt
- ltRestaurant id"R1"gtLe meilleur
restaurantlt/Restaurantgt - lt/Guidegt
ltRestaurantgt
Element
NamedNodeMap
Id"R1"
Attr
NodeList
Text
Le meilleur restaurant
DOM
11L'arbre DOM
- Navigation via un arbre générique de nœuds
- Node
- NodeList (Parent/Child)
- NamedNodeMap
- Tout nœud hérite de Node
Node
Document
ProcessingInstruction
DocumentType
Element
....
lt?xmlstylesheet ...gt
lt!DOCTYPE ...gt
ltRestaurant ....gt
Child
Text Le meilleur restaurant
DOM
12Quelques interfaces de base
- Document
- createElement (Nom_Element)
- créer un élément avec le nom spécifié en
paramètre. - createComment (commentaire)
- créer une ligne de commentaires dans le
document. - createAttribute (Nom_Attribut)
- créer un attribut avec le nom pris en paramètre.
- getElementsByTagName (nom_Tag)
- retourne tous les descendants des éléments
correspondants au Nom_Tag.
- Nœud
- insertBefore (Nouveau_Noeud, Noeud_Reference)
- insère un nouveau nœud fils avant le " nœud
référence" déjà existant. - replaceChild (Nouveau_Noeud, Ancien_Noeud)
- remplace le nœud "Ancien_Noeud" par le nœud
"Nouveau_Noeud". - removeChild (Nœud)
- supprime le nœud entré en paramètre de la liste
des nœuds. - appendChild (Nouveau_Noeud)
- Ajoute un nouveau nœud a la fin de la liste des
nœuds. - hasChildNodes()
- Retourne vrai si le nœud possède un enfant
DOM
13Autres interfaces
- Interfaces fondamentales
- DOMImplementation
- Document
- Comment
- DocumentFragment
- Element
- Attr(ibute)
- NamedNodeMap
- CharacterData
- Comment
- Text
- Interfaces étendues XML
- ProcessingInstruction
- DocumentType
- CDATASection
- Notation
- Entity
- EntityReference
DOM
14Exemple d'utilisation
- Public class ExempleDOM
- public static main (String argc) throws
IOException, DOMExcetion - XMLDocument xmlDoc new XmlDocument()
- // creation des nœuds
- ElementNode nom (ElementNode)
xmlDoc.createElement("nom") - ElementNode prenom (ElementNode)
xmlDoc.createElement("prenom") - ElementNode nomfam (ElementNode)
xmlDoc.createElement("nomfam") - // creation de l'arbre
- xmlDoc.appendChild(nom)
- nom.appenChild(prenom)
- prenom.appendChild(xmlDoc.createTextNode("Jean")
- nom.appenChild(nomfam)
- nomfam.appendChild(xmlDoc.createTextNode("Dupont")
- // positionnement d'un attribut
- nom.setAttribute("ville", "Paris")
- // sortie
- System.exit(0)
Document ltnom ville "Paris"gt ltprenomgt Jean
lt/prenomgt ltnomfagt Dupont lt/nomfagt lt/nomgt
DOM
15Bilan DOM
- Une interface objet standard
- Navigation dans l'arbre XML
- Traitements spécifiques
- Performance limitée
- Place mémoire importante
- Traitement à la fin de l'analyse
- DOM 2.0
- Accède dynamiquement au contenu et à la structure
du document
- Extensions en cours
- DOM Level 3 XPath
- Support direct de XPath
- Définition d'un XPath Evaluator
- Devrait être intégré aux parsers
- DOM Level 3 Events
- Modèle d'événements
- Associés à un nœud
- Propagés dans l'arbre DOM
- DOM Level 3 Style
- Accès aux styles
- Mapping complet
DOM
163. L'interface SAX
- SAX (Simple API for XML)
- modèle simplifié d'événements
- développé par un groupe indépendant.
- Types d'événement
- début et fin de document
- début et fin d'éléments
- attributs, texte, .
- Nombreux parseurs publics
- XP de James Clark, Aelfred, Saxon
- MSXML3 de Microsoft
- Xerces de Apache
- JAXP de SUN
SAX
17Principe de fonctionnement
Méthodes utilisateur
Evénement startDocument
Parser
Stream XML
Document XML
Evénement startElement
.
Evénement endDocument
Content Handler
SAX
18Les méthodes essentielles
- XMLReader
- setContentHandler
- setErrrorHandler
- parse
- ContentHandler
- startDocument
- endDocument
- startElement
- endElement
- characters
- ErrorHandler
- fatalError
- error
- warning
SAX
19Exemple SAX et DOM
startDocument () startElement (personne) startElem
ent (nom) characters (Cover) endElement
(nom) startElement (prenom) characters
(Harry) endElement (prenom) startElement
(adresse) startElement (rue) characters
(Stendhal) endElement (rue) startElement
(ville) characters (Paris) endElement
(ville) endElement (adresse) endElement
(personne) endDocument ()
ltpersonnegt ltnomgt Cover lt/nomgt ltprenomgt
Harry lt/prenomgt ltadressegt ltruegt
Stendhal lt/ruegt ltvillegt Paris
lt/villegt lt/adressegt lt/personnegt
SAX
20DOM versus SAX
- DOM utilise SAX pour la construction de larbre
dun document XML - SAX est plus léger que DOM
- Au-dessus de DOM, il est possible d implémenter
un method caller ...
SAX
214. Le mapping objet (Data Binding)
- Définition
- Mapping entre un document XML et un graphe
dobjets métier C ou Java
Interface générée à laide doutils de Data
Binding
Développements manuels
Objets C
Objets Java
Objets Java
Parsing Xerces C
Parsing XDK Java
Binding Java
XML
XML
XML
Mapping
22Avantages
- Lactivité de développement "parsing" est réduite
- Gain en coût de développement des interfaces
- Les applications peuvent se concentrer sur le
fonctionnel - Les développeurs n'ont pas à se soucier du
mapping XML - Les Systèmes Techniques sont simplifiés
- Capitalisation sur linterface (utilisation,
évolution, ) - Gain en terme de fiabilité (fin de lutilisation
de parseurs variés, parfois écrits à la main) - Les performances de linterface sont optimisées
- Les outils de mapping sont intégrés aux serveurs
- J2EE JAXB
- .NET mapper
Mapping
23Comment traiter les tags XML ?
- Tags connus
- déclenchement d'un traitement prédéfini
- appel de méthode associée avec paramètres
- transformation et stockage en BD
- génération de requête base de données
- Tags inconnus
- les ignorer pas toujours satisfaisant
- les interdire (DTD, Schéma) peu flexible
- leur appliquer un traitement standard
affichage, erreur, etc. - rechercher le traitement approprié bibliothèque
Java
Mapping
24XML synthèse des outils
XMLSchema(ou DTD)
DOM
Parser
SAX
Mal formé/Invalide
XSLFO
XSLT
Objets Métiers
Mapping
255. Plate-forme J2EE
- Java 2 Enterprise Edition
- Un langage une architecture standardisés
- Supportée par plus de 50 constructeurs
- SUN, IBM, Oracle, BEA
- Architecture pour serveur d'applications
- Plate-forme composée de conteneurs
- Deux types de conteneurs
- Conteneur Web
- Conteneur EJB
- Un ensemble d'API standards
J2EE
26Architecture J2EE
Serveur d'applications
EJB
Servlet
JSP
RMI JNDI JTA JDBC JMS JavaMail JAX
RMI JNDI JTA JDBC JMS JavaMail JAX
Base de données
Autres ressources
J2EE
27J2EE APIs
- JNDI
- accès aux services de nomination et de directory
- DNS, NDS, NIS, LDAP, COS
- RMI
- invocation de méthodes Java à distance
- JIDL
- Java IDL - interface Corba
- JavaMail
- Envoie et réception de messages depuis Java
- JSP
- Java Server Pages et servlets
- support HTML dynamique
- JMS
- Java Messaging Service
- JTA, JTS
- Java transaction Service
- basé sur OTS de Corba
- JDBC
- accès aux BD relationnelles
- JAX
- Interfaces pour XML
J2EE
28Les API J2EE pour XML
- JAXP
- Interface commune pour SAX, DOM, XSL
- Pour traiter les doc. XML avec différents parsers
- JAXB
- Interface de liaison avec des objets (EJB)
- JAXM
- Interface pour envoyer des messages en SOAP
- Synchrones ou asynchrones, avec attachements
- JAX-RPC
- Invocation de méthode SOAP et collecte réponse
- Permet la construction de services avec clients
- JAXR
- Accès uniforme à des annuaires UDDI, ebXML,
J2EE
29Architecture .NET de Microsoft
VB
C
JScript
C
SOAP XML Toolkits
OLE-DB Fédérateur de BD
ASP.NET
ADO.NET
BCL.NET
Common Language Runtime (CLR)
Windows et COM Services
.NET
30Les dialogues avec XML
templates
XSP
EJB
Skel.
Stub
BD
Un seul modèle !
Une évolution majeure en marche ...
J2EE et .NET
31Bilan
- Serveurs d'applications
- Des composants objet
- Une plate-forme distribuée
- Des API pour XML
- XML/SOAP
- Le protocole de haut niveau
- Peut intégrer les autres
- Une nouvelle approche SOA
- Qu'en pense Bill Gates ?
- .NET et ses outils
- Une 3e idée géniale
- Les Web Services
Java XML