xml dans les serveurs d'applications
Embed Size (px)
DESCRIPTION
XML dans les Serveurs d'applications. Serveurs d'applications : rappels L'interface DOM L'interface SAX XML, J2EE et .NET Conclusion. 1. 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 - PowerPoint PPT PresentationTRANSCRIPT

G. Gardarin
XML dans les Serveurs d'applications
1. Serveurs d'applications : rappels2. L'interface DOM3. L'interface SAX4. XML, J2EE et .NET5. Conclusion

IV.2 G. Gardarin
1. Serveurs d'applications
Java, un langage portableMais 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 MicrosoftAvantages de XML:
• échange sécurisé sur HTTP• un message porte plusieurs objets• interopérabilité des Services Web
Serveurs d'applications

IV.3 G. Gardarin
Architecture d’un serveur d ’appli.
Serveurs d'applications
Applications légataires
(Mainframes)
Autres serveursd'applications
Bases de données
Outils de développementsBasé composants
Moniteur TransactionsFiles de messages
….
Client HTML
Client Java
Client COM
Client CORBA
ooo
Gestionnaire de threads
Services de Sécurité
Gestionnaire de Données
Gestionnaires de Messages
Gestionnaire de Composants
Noyau serveur d'applications
Gestionnaire de Connexions
Serveur HTTPDocuments HTML/XML
CGIRPC DCE
RMIIIOP
…

IV.4 G. Gardarin
Principaux serveurs d’application
WebLogic de BEAWebSphere Application Server d ’IBMDomino Application Server de Lotus -IBM iPlanet Application Server de SunOracle Application ServerSybase Enterprise ApplicationTomcat+Jboss (Open Source)Tomcat+Jonas (Open Source)Microsoft .NET, Vista & Indigo
Serveurs d'applications

IV.5 G. Gardarin
Les dialogues sans XML
Transactions/Requêtes
Templates HTML
(ASP,JSP)
invocationServices ObjetsMétiers
BD
requête
HTML
Compilation
URL longue URL longue HTMLHTML
API ObjetAPI Objet
Trois modèles !
SQLSQL
XAXA
Serveurs d'applications
Instantiation/Activation

IV.6 G. Gardarin
XML 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

IV.7 G. Gardarin
XML 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

IV.8 G. Gardarin
2. 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

IV.9 G. Gardarin
Principaux parseurs
DocumentXML
Parseur DOM
Arbre DOM
Application
API DOM
Xerces Apache (Java, C++)
MSXML Microsoft
SDK Oracle Oracle
JAXP J2EE Sun, ...
DOM

IV.10 G. Gardarin
Exemple d'arbre DOM
<Guide><Restaurant id="R1">Le
meilleur restaurant</Restaurant>
</Guide>
Document
NodeList
NodeList
NamedNodeMap
Attr
Element
NodeList
Element
Text
Racine du document
<Guide>
<Restaurant>
Id="R1"
Le meilleur restaurant
DOM

IV.11 G. Gardarin
L'arbre DOM
Navigation via un arbre générique de nœuds• Node• NodeList (Parent/Child)• NamedNodeMap
Tout nœud hérite de Node
ProcessingInstruction
<?xml:stylesheet ...>
DocumentType
<!DOCTYPE ...>
Element
<Restaurant ....>
....
Document
Child
DOM
Text
Le meilleur restaurant
Node

IV.12 G. Gardarin
Quelques 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

IV.13 G. Gardarin
Autres interfaces
Interfaces fondamentales• DOMImplementation• Document• Comment• DocumentFragment• Element • Attr(ibute)• NamedNodeMap• CharacterData
Comment Text
Interfaces étendues XML• ProcessingInstruction• DocumentType• CDATASection• Notation• Entity• EntityReference
DOM

IV.14 G. Gardarin
Exemple d'utilisationPublic class ExempleDOMpublic static main (String argc[]) throws IOException, DOMExcetion{XMLDocument xmlDoc = new XmlDocument();// creation des nœudsElementNode nom = (ElementNode) xmlDoc.createElement("nom");ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom");ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam");// creation de l'arbrexmlDoc.appendChild(nom);nom.appenChild(prenom);prenom.appendChild(xmlDoc.createTextNode("Jean");nom.appenChild(nomfam);nomfam.appendChild(xmlDoc.createTextNode("Dupont");// positionnement d'un attributnom.setAttribute("ville", "Paris");// sortieSystem.exit(0); } }
Document:
<nom ville ="Paris">
<prenom> Jean </prenom>
<nomfa> Dupont </nomfa>
</nom>
DOM

IV.15 G. Gardarin
Bilan 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

IV.16 G. Gardarin
3. L'interface SAX
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

IV.17 G. Gardarin
Principe de fonctionnement
DocumentXML
Parser
EvénementstartDocument
EvénementstartElement
EvénementendDocument
….
StreamXML
Méthodesutilisateur
Content Handler
SAX

IV.18 G. Gardarin
Les méthodes essentielles
XMLReader• setContentHandler• setErrrorHandler• parse
ContentHandler• startDocument• endDocument• startElement• endElement• characters
ErrorHandler• fatalError• error• warning
SAX

IV.19 G. Gardarin
Exemple SAX et DOM
personnenom
prenom
adresserue
ville
#text: Cover
#text: Paris
#text: Stendhal
#text: Harry
startDocument ()startElement (personne)startElement (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 ()
<personne> <nom> Cover </nom>
<prenom> Harry
</prenom> <adresse>
<rue> Stendhal
</rue> <ville> Paris </ville>
</adresse></personne>
SAX

IV.20 G. Gardarin
DOM versus SAX
DOM utilise SAX pour la construction de l’arbre d’un document XML
SAX est plus léger que DOM
Au-dessus de DOM, il est possible d ’implémenter un « method caller » ...
SAX

IV.21 G. Gardarin
4. Le mapping objet (Data Binding)
Définition• Mapping entre un document XML et un graphe
d’objets métier C++ ou Java
Objets C++
XML
Parsing Xerces C++
Objets Java
Parsing XDK Java
Objets Java
Binding Java
Interface générée à l’aide d’outils de Data Binding
Développements manuels
XML XML
Mapping

IV.22 G. Gardarin
Avantages
L’activité 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 l’interface (utilisation, évolution, …)• Gain en terme de fiabilité (fin de l’utilisation de parseurs
variés, parfois écrits à la main)• Les performances de l’interface sont optimisées
Les outils de mapping sont intégrés aux serveurs• J2EE = JAXB• .NET = mapper
Mapping

IV.23 G. Gardarin
Comment 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

IV.24 G. Gardarin
XML: synthèse des outils
DO
MD
OM
Manipulationde l'arbre
Manipulationde l'arbre
Mal formé/Invalide SA
XS
AX
événements – call back événements – call back
<ville>Paris</ville>
XMLXML<ville>Paris</ville><pays>France</pays><temp echelle="C">18</temp> P
arse
rP
arse
rBien formé
Valide
XSLT XSLT
PDFPDF RTF, WordRTF, Word(X)HTML(X)HTML
<city>Paris</city><temp degree="F">65</temp>
WMLWML XMLXML
<ville>Paris</ville><pays>France</pays><temp echelle="C">18</temp>
XMLXML
XMLSchema(ou DTD)
XMLSchema(ou DTD)
Mapping
XSLFO XSLFO
XSLStylesheet
XSLStylesheet
Da
ta B
ind
er
Da
ta B
ind
er
ObjetsMétiers

IV.25 G. Gardarin
5. Plate-forme J2EE
Java 2 Enterprise EditionUn 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

IV.26 G. Gardarin
Architecture J2EE
Conteneur web Conteneur EJB
Servlet JSP
RM
I
JND
I
JTA
JDB
C
JMS
JavaM
ail
JAX
RM
I
JND
I
JTA
JDB
C
JMS
JavaM
ail
JAX
EJB
Serveur d'applications
Base de données Autres ressources
J2EE

IV.27 G. Gardarin
J2EE 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

IV.28 G. Gardarin
Les 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

IV.29 G. Gardarin
Architecture .NET de Microsoft
VB C++ JScript …C#
ASP.NET ADO.NETBCL.NET
Common Language Runtime (CLR)
Windows et COM+ Services
SOAP&
XML
Toolkits
OLE-DB
FédérateurdeBD
.NET

IV.30 G. Gardarin
Les dialogues avec XML
TagLibTagLib
Un seul modèle !
templates
EJB
BD
XSP
XML/SOAPXML/SOAPXSLXSL
Skel.
XML/XML/SOAPSOAP
XMLXMLXQueryXQuery
XMLXMLJCAJCA
Stub
J2EE et .NET

IV.31 G. Gardarin
Bilan 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 …
Questions ?
Java & XML