IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

 

Développons en Java avec Eclipse   0.80.1  
Copyright (C) 2003-2008 Jean-Michel DOUDOUX    (date de publication : 26/12/2008)

[ Précédent ] [ Sommaire ] [ Suivant ] [Télécharger ]      [Accueil ]

 

21. XML et Eclipse

 

chapitre 2 1

 

L'utilisation de XML est omniprésente dans la conception, le développement et la mise en d'oeuvre d'applications que ce soit pour configurer ou déployer une application, échanger ou stocker des données.

Ce chapitre contient plusieurs sections :

 

21.1. JAXB et Eclipse

JAXB est l'acronyme de Java Architecture for XML Binding. Le but de l'API et des spécifications JAXB est de faciliter la manipulation d'un document XML en générant un ensemble de classes qui fournissent un niveau d'abstraction plus élevé que l'utilisation de JAXP (SAX ou DOM). Avec ces deux API, toute la logique de traitements des données contenues dans le document est à écrire.

JAXB au contraire fournit un outil qui analyse un schéma XML et génère à partir de ce dernier un ensemble de classes qui vont encapsuler les traitements de manipulation du document.

Pour pouvoir utiliser JAXB, il est nécessaire d'installer le Java Web Services Developer Pack 1.3. Dans le cas de l'utilisation d'un JDK 1.4, attention de bien suivre les instructions fournies à la fin de l'installation.

Il est aussi nécessaire de définir deux variables d'environnement système (sous Windows 2000 : menu "Paramètres / Panneau de configuration / Système", sélectionner l'onglet "avancé", puis cliquer sur le bouton "variables d'environnement" ) :

JAVA_HOME dont la valeur doit correspondre au répertoire d'installation du JDK :

JAXB_HOME dont la valeur doit correspondre au répertoire dans lequel le JWSDP est installé :

Il existe deux moyens d'utiliser JAXB avec Eclipse :

  • Créer et configurer une tâche d'exécution qui va lancer la génération des classes Java via l'outil de JAXB
  • Exécuter Ant fourni avec le JWSDP en tant qu'outil externe dans Eclipse
 

Version utilisée dans cette section

Eclipse

2.1.2

J2RE

1.4.2_02

JAXB

1.3

 

21.1.1. Créer et configurer une tâche d'exécution pour JAXB

Il faut créer un nouveau projet, par exemple nommé test_jaxb et modifier son chemin de compilation (dans les propriétés du projet) pour ajouter plusieurs fichiers .jar :

  • Les fichiers jar ajoutés dans le répertoire JAVA_HOME\jre\lib\endorsed lors de l'installation du JWSDP
  • Les fichiers jar contenus dans le répertoire JAXB_HOME\jaxb\lib

Il faut ensuite créer une nouvelle tâche d'exécution en utilisant l'option du menu « Exécuter/Exécuter ... » et en cliquant sur le bouton “Nouveau”.

Il faut changer le nom, par exemple « Génération des classes JAXB » et saisir dans le champ Classe Main la valeur « LauncherBootstrap ».

Sur l'onglet « Arguments », dans la zone de saisie "Arguments de programme" saisir (bibliotheque.xsd est le nom du fichier qui contient le schéma du document XML)  :

-verbose xjc bibliotheque.xsd -p com.moi.test.jaxb

Sur l'onglet « Chemin d'accès aux classes », décochez « Utiliser le chemin d'accès aux classes par défaut » puis cliquez sur le bouton « Avancées »

Cliquez sur le bouton « Ajouter un dossier externe » puis sur le bouton "Ok"

Selectionnez le repertoire %JWSDP%/jwsdp-shared/bin et cliquez sur le bouton « OK »

Cliquez sur le bouton « Fermer »

Cliquez sur le bouton « Oui »

Il faut aussi ajouter le fichier tools.jar présent dans le répertoire lib du JDK :

Si ce fichier n'est pas ajouté, une exception est levée lors de l'exécution :

Exemple :
file:C:/java/jwsdp-1.3/jwsdp-shared/bin/launcher.xml:329: java.io.IOException: Could not find Java(TM) 2 SDK classes. 
This application cannot run using the Java(TM) 2 JRE. It requires the full SDK.
at org.apache.commons.launcher.LaunchTask.execute(LaunchTask.java:728)
at org.apache.tools.ant.Task.perform(Task.java:341)
at org.apache.tools.ant.Target.execute(Target.java:309)

La configuration est maintenant terminée, il faut un schéma qui décrit le document XML directement à la racine du projet, par exemple bibliotheque.xsd.

Pour lancer la génération des classes Java par JAXB, il faut utiliser l'option du menu « Exécuter/Exécuter ... » et sélectionner « Application Java/Generation de classe JAXB »

La boîte de dialogue réaffiche les paramètres précédemment enregistrés : il suffit de cliquer sur le bouton « Exécuter ».

Les messages issus des traitements sont affichés dans la console.

Dans la vue « Packages », sélectionner le projet test_jaxb et utiliser l'option « Régénérer » du menu contextuel pour rafraîchir le contenu du projet et voir les fichiers générés lors des traitements.

 

21.1.2. Exécuter Ant en tant qu'outil externe

L'exécution de JAXB se fait normalement en utilisant une tache Ant dédiée.

Malheureusement, il y a une incompatibilité entre la version de Ant fournie avec Eclipse et celle requise par JAXB. L'exécution d'un build.xml en utilisant Ant fourni avec Eclipse échoue systématiquement :

Résultat de l'exécution :
Buildfile: C:\java\eclipse\workspace\test_jaxb\build.xml
  compile:
        [echo] Compiling the schema external binding file...
         [xjc] Compiling file:/C:/java/eclipse/workspace/test_jaxb/bibliotheque.xsd
         [xjc] [WARNING] Unable to validate your schema. Most likely, the JVM has 
               loaded an incompatible XML parser implementation. You should fix this 
               before relying on  the generated code. Please see the release notes 
               for details.
         [xjc] unknown location
         [xjc] 
         [xjc] BUILD FAILED: file:C:/java/eclipse/workspace/test_jaxb/build.xml:31: 
               unable to parse the schema. Error messages should have been provided
Total time: 5 seconds

Pour résoudre ce problème et utiliser Ant, il faut l'exécuter en tant qu'outil externe.

Il faut définir le fichier build.xml qui va contenir les différents traitements à exécuter par Ant.

Résultat de l'exécution :
<?xml version="1.0"?>
<project basedir="." default="compile">
  <property name="jwsdp.home" value="C:\java\jwsdp-1.3" />
  <property name="java.home" value="C:\java\j2sdk1.4.2_02" />

  <path id="classpath">
    <pathelement path="." />
    <fileset dir="${java.home}" includes="jre/lib/endorsed/*.jar" />
    <fileset dir="${jwsdp.home}" includes="jaxb/lib/*.jar" />
    <fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/*.jar" />
    <fileset dir="${jwsdp.home}" includes="jaxp/lib/**/*.jar" />
  </path>

  <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
    <classpath refid="classpath" />
  </taskdef>

  <target name="compile">
    <echo message="Generation des classes Java a partir du schema ..."/>
    <xjc schema="bibliotheque.xsd" target="./src" package="com.moi.test.jaxb"/>
    <echo message="Compilation des sources ..."/>
    <javac srcdir="./src" destdir="." debug="on">
      <classpath refid="classpath" />
    </javac>
  </target>
  
</project>

Il faut utiliser l'option du menu « Exécuter/ Outils externes/Outils externes ... » et cliquer sur le bouton « Nouveau ».

Sur l'onglet « Principal », il suffit de sélectionner l'emplacement du fichier ant.bat fourni avec le JWSDP, puis de cliquer sur le bouton « Appliquer », puis sur le bouton « Exécuter ».

Les informations générées par Ant au cours de l'exécution sont affichées dans la console.

Résultat de l'exécution :
Buildfile: build.xml

compile:
     [echo] Generation des classes Java a partir du schema ...
      [xjc] Compiling file:/C:/java/eclipse/workspace/test_jaxb/bibliotheque.xsd
      [xjc] Writing output to C:\java\eclipse\workspace\test_jaxb\src
     [echo] Compilation des sources ...
    [javac] Compiling 44 source files to C:\java\eclipse\workspace\test_jaxb

BUILD SUCCESSFUL
Total time: 1 minute 4 seconds

Pour voir les fichiers générés par JAXB lors de ces traitements, il suffit d'utiliser l'option « Régénérer » du menu contextuel du projet dans la vue « Packages ».

 

21.2. Le plug-in WTP pour utiliser XML

Le plug-in WTP facilite la manipulation de documents XML.

 

21.2.1. Créer un nouveau document XML

Il faut créer une nouvelle entité de type XML/XML

Cliquez sur le bouton « Suivant »

Sélectionnez « Créer un fichier XML à partir de rien » puis cliquez sur le bouton « Suivant »

Sélectionnez le répertoire qui va contenir le fichier, saisissez son nom et cliquez sur le bouton « Terminer »

L'éditeur de documents XML s'ouvre avec le nouveau document créé.

L'éditeur propose une coloration syntaxique du code.

La syntaxe du code XML est vérifiée au fur et à mesure de la saisie

L'assistant de code permet de faciliter la saisie du code du document.

La vue « Properties » permet d'afficher les attributs du tag sur lequel est positionné le curseur dans l'éditeur de code

 

21.2.2. La création d'une DTD

Il faut créer une nouvelle entité du type « XML/Fichier DTD ».

Cliquez sur le bouton "Suivant" puis sélectionnez le répertoire qui va contenir le fichier et saisissez son nom

Cliquez sur le bouton « Terminer » pour générer le fichier et l'ouvrir dans l'éditeur.

 

21.2.3. La création d'un schéma

Il faut créer une nouvelle entité du type « XML/Schéma XML  ».

Cliquez sur le bouton "Suivant".

Saisissez le nom du fichier .xsd et cliquez sur le bouton "Terminer.

L'onglet "Graphique" permet d'offir une vision graphique du contenu du document.

La vue propriétés permet d'affiche des informations sur le schéma.

En cliquant sur le bouton "Option avancées", une boîte de dialogue s'ouvre en affichant des informations sur le schéma.

 

21.2.4. Les préférences

Pour accéder aux préférences concernant les fichiers XML, il est possible d'utiliser l'option « Préférences ...  » du menu « Fenêtre » ou d'utiliser l'option « Préférence » du menu contextuel de l'éditeur de code XML.

Cette page permet de sélectionner le caractère de fin de ligne des documents et la norme d'encodage par défaut des documents.

Cette page permet de configurer certaines règles pour le formatage du code source des documents XML.

Cette page permet de préciser les couleurs de chaque éléments qui peuvent composer un document XML.

Cette page permet de gérer des modèles réutilisables lors de l'édition de documents XML.

 

21.2.5. Création d'un document XML à partir d'une DTD

L'assistant de création d'un document XML propose de le faire à partir d'une DTD afin de faciliter sa rédaction

Le fichier test.dtd ci-dessous est utilisé dans les exemples de cette section.

Exemple :
<!ELEMENT bibliotheque (livre+)> 
<!ELEMENT livre (titre,auteur,parution?)> 
<!ELEMENT titre (#PCDATA)> 
<!ELEMENT auteur (#PCDATA)> 
<!ELEMENT parution (#PCDATA)>

Il faut créez une nouvelle entité de type XML/XML

Sélectionnez « Créer un fichier XML à partir d'un fichier DTD » et cliquez sur le bouton « Suivant ».

Sélectionnez le répertoire qui va contenir le fichier, saisissez son nom et cliquez sur le bouton « Suivant »

Sélectionnez la dtd à utiliser et cliquez sur le bouton « Suivant »

Sélectionnez l'élément racine et les options désirées puis cliquez sur le bouton « Terminer ».

L'éditeur de code s'ouvre avec le document XML généré

L'onglet concepteur permet de fournir une vue arbrescente du contenu du document.

L'assistant de code propose uniquement les tags définis dans la dtd.

Le document est dynamiquement vérifié au fur et à mesure de la saisie du code du document

 

21.2.6. La validation des documents

Le plug in WTP propose des fonctionnalités pour valider les documents de type XML, DTD et XML Schema.

Cette validation peut être implicite (lors de la sauvegarde d'un document) ou explicite (à la demande de l'utilisateur d'Eclipse).

La validation explicite peut être demandée en utilisant l'option « Valider le fichier XXX  » du menu contextuel associé à un document de type XML, DTD et XML Schema.

Si le document est valide, un message en informe l'utilisateur.

Si le document est invalide, un message d'erreur en informe aussi l'utilisateur.

Les erreurs des documents non valides sont signalées dans l'éditeur de code

Ces erreurs sont aussi incluses dans la vue « Erreurs » au même titre que les erreurs dans du code Java.

Il est possible de modifier le mode de fonctionnement de la validation automatique lors de l'enregistrement des documents d'un projet en utilisant les préférences liées au projet.

Il suffit de cocher la case « Remplacer les préférences de validation  », de modifier les options voulues et de cliquez sur le bouton « OK » pour valider les options.

 


[ Précédent ] [ Sommaire ] [ Suivant ] [Télécharger ]      [Accueil ]

Copyright (C) 2003-2008 Jean-Michel DOUDOUX. Vous pouvez copier, redistribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU, Version 1.1 ou toute autre version ultérieure publiée par la Free Software Foundation; les Sections Invariantes étant constitués du chapitre Préambule, aucun Texte de Première de Couverture, et aucun Texte de Quatrième de Couverture. Une copie de la licence est incluse dans la section GNU FreeDocumentation Licence. La version la plus récente de cette licence est disponible à l'adresse : GNU Free Documentation Licence.