III. Créer un Web Service avec Axis sous Eclipse

publicité
Doc développeur
SOMMAIRE
Doc developpeur ........................................................................................................................ 1
SOMMAIRE .............................................................................................................................. 2
I.
Outils Utilisés ................................................................................................................. 2
II.
Installer le plugin WTP pour Eclipse ............................................................................. 2
III.
Créer un Web Service avec Axis sous Eclipse ............................................................... 7
IV.
Déployer un Web Service sur un serveur Tomcat ........................................................ 10
Glossaire ................................................................................................................................... 12
Apache Axis : ................................................................................................................... 12
SOAP :.............................................................................................................................. 12
Web Service : ................................................................................................................... 12
I. Outils Utilisés

Pour le développement des Web Services :
o Serveur HTTP Apache Tomcat version >= 5.5
o IDE Eclipse version 3.2

Plugin Web Tools Platform (WTP) version 1.5
(avec la librairie Apache Axis 1.3 intégré à WTP)
II. Installer le plugin WTP pour Eclipse
Web Tools Platform (WTP) est une extension pour l’IDE Eclipse. Cette extension est
orientée pour le développement Web J2EE (Servlet / JSP / EJB / Web Services). Ce plugin
intègre notamment la librairie Apache Axis qui permet de développer et déployer des Web
Services en Java.
Site officiel de WTP : http://www.eclipse.org/webtools/
Site officiel d’axis : http://ws.apache.org/axis/
1. Dans la barre de menu, aller dans : Help > Software Updates > Find and Install…
2. Sélectionner “Search for new features to install”, puis cliquer sur le bouton “Next”.
3. Si le site Calisto (ou Calisto Discovery Site) n’est pas présent dans la liste de choix,
ajouter le en cliquant sur le bouton “New Remote Site”, puis saisir l’url suivant :
http://download.eclipse.org/webtools/updates/
2 / 12
4. Cocher les cases des deux lignes Callisto et The Eclipse Project Updates, puis cliquer sur
le bouton “Finish”.
3 / 12
5. Après avoir sélectionné les sites miroirs, cocher dans la liste de choix la ligne The Eclipse
Project Updates, ainsi que la ligne Callisto > Web and J2EE Development.
4 / 12
6. Ensuite cliquer sur le bouton “Select Required”, pour auto-sélectionner les composants
nécessaires au bon fonctionnement des plugins précédemment cochés.
7. Ensuite cliquer sur le bouton “Next”.
8. À la page suivante, accepter les termes du contrat, puis cliquer à nouveau sur le bouton
“Next” pour lancer le téléchargement des composants à installer (cette étape peut prendre
plusieurs minutes).
9. Une fois tous les éléments téléchargés, cliquer sur le bouton “Install All” pour lancer les
installations automatiquement. Une fois fini, redémarrer Eclipse.
5 / 12
10. Ensuite, retourner dans la barre de menu : Help > Software Updates > Find and Install…
11. Sélectionner “Search for new features to install”, puis cliquer sur le bouton “Next”.
12. Cocher la ligne “Web Tools Platform (WTP) Updates”, puis cliquer sur le bouton
“Finish”, sélectionner le site miroir. Cocher à nouveau la ligne “Web Tools Platform
(WTP) Updates”, puis cliquer sur le bouton “Next”.
6 / 12
13. À la page suivante, accepter les termes du contrat, puis cliquer à nouveau sur le bouton
“Next” pour lancer le téléchargement des composants (cette étape peut prendre plusieurs
minutes).
14. Une fois tous les éléments téléchargés, cliquer sur le bouton “Install All” pour lancer les
installations automatiquement. Une fois fini, redémarrer Eclipse.
III.
A ce stade la dernière version du plugin WTP pour Eclipse est installée et
opérationnelle.Créer
Pré-requis :
un Web Service avec Axis sous Eclipse
pour tester un Web Service localement, il sera nécessaire d’installer un
serveur HTTP Java (par exemple Apache Tomcat) sur la machine, ainsi que le
plugin Eclipse Web Tools Platform (WTP).
1- Créer un « Web project »
a. Menu : File > New > Project… > Web > Dynamic Web Project ;
b. Remplir le champ « Project name »
c. Sélectionner un serveur Web Java dans le champ « Target Runtime »
ou
Si un serveur Web n’est pas présent :
Cliquer sur le bouton « New… » pour rajouter un nouveau :
7 / 12
i. sélectionner le serveur de votre choix (dans notre cas Apache > Apache
Tomcat 5.5), puis cliquer sur le bouton « Next »;;
ii. Remplir le champ « Tomcat installation directory » (par exemple :
C:\Program Files\Apache Software Foundation\Tomcat 5.5), puis cliquer sur
le bouton « Finish » ;
d. Cliquer sur le bouton « Finish » (et refuser l’ouverture perspective J2EE).
2- Écrire les classes Java dans le dossier « src », en respectant un typage des variables
d’entrées et de sorties qui soit compatible SOAP. Au sein des méthodes des classes, le
typage des variables est libre, car non traité directement par le protocole SOAP.

Type de variable Java compatible SOAP :
SOAP
JAVA
xsd:base64Binary
xsd:boolean
xsd:byte
xsd:dateTime
xsd:decimal
xsd:double
xsd:float
xsd:hexBinary
xsd:int
xsd:integer
xsd:long
xsd:QName
xsd:short
xsd:string
byte[]
boolean
byte
java.util.Calendar
java.math.BigDecimal
double
float
byte[]
int, Integer
java.math.BigInteger
long
javax.xml.namespace.QName
short
java.lang.String
xsd:complexType
Object, Object[]
Les collections (Vector, ArrayList, LinkedList, HashMap…) ne sont pas compatibles avec le
protocole SOAP. Il est nécessaire d’utiliser un tableau d’objets JavaBeans (Object[]). On
parle alors de type complexe (xsd:complexType). Les types complexes doivent être constitués
de classes respectant le formalisme JavaBean.
 Conventions JavaBean :
i. La classe doit être serializable pour pouvoir sauver et restaurer l'état
d'instances de cette classe ;
ii. Doit posséder au moins un constructeur sans argument ;
iii. Les propriétés de la classe (variables d'instances) doivent être
accessibles via des méthodes qui suivent également des conventions de
nommage (exemple getVariable() , setVariable(type variable)…) ;
iv. Doit contenir les méthodes d'interception d'événements nécessaires.
(Plus d’informations : http://java.sun.com/products/javabeans/docs/spec.html)
3- Générer un Web Service avec Axis sous Eclipse :
a. Avant de générer le service, il est possible de configurer le paramètre « scope »
qui permet de définir, avec finesse, la portée des instances du Web Service. Il
existe 3 sortes de portées :
8 / 12
i. Request : une instance du Web Service sera créée à chaque requête
d’un client.
ii. Session : une instance du service sera créée pour chaque client distinct
accédant au Web Service.
iii. Application : une seule instance du Web Service sera créée et utilisée
pour traiter l’ensemble des requêtes des différents clients.
Pour régler ce paramètre, aller dans le Menu : Window > Preferences... > Web
Services > Axis Emitter et sélectionner la valeur du paramètre « scope » dans
la liste déroulante « Add scope to deploy.wsdd ». Enfin valider et quitter le
réglage des préférences.
b. Aller sur la classe à publier, puis faite : Clique droit > Web Services > Create
Web Service.
c. Laisser les paramètres par défaut et cliquer sur « Next ». Si une erreur apparaît,
votre classe (ou les classes liées) n’est pas compatible et/ou est susceptible de
générer une erreur de compilation, retourner à l’étape 2. Attention, si
l’avertissement persiste, redémarrer Eclipse et recommencer l’étape 3.
d. Dans « Methods », cocher les méthodes à inclure au Web Service. Dans
« Style and use », sélectionner RPC/encoded. Cliquer sur « Next ». Si le
message d’alerte suivant apparaît « You have made a choice that may result
in a Web service that does not comply with the WS-I Simple SOAP Binding
Profile. », cliquer sur « Ignore ».
e. Les fichiers de déploiement des Web Services (WSDL, WSDD…) sont
maintenant générés. Cliquer sur « Start Server » pour lancer le serveur Web
Tomcat. Puis cliquer sur « Next » pour déployer les Web Services sur le
serveur Web Interne à Eclipse. Enfin cliquer sur « Finish ».
9 / 12
4- Tester un Web Service :
a. Dans le dossier « / WebContent / wsdl / » du projet Web, aller sur le service à
tester (service-a-tester.wsdl) et faire Clique droit > Web Services > Test with
Web Services Explorer.
b. Dans la fenêtre « Actions », cliquer sur une méthode, puis saisir les paramètres
et cliquer sur le bouton « Go » du formulaire.
c. Dans la fenêtre « Status », visualiser la réponse. Cliquer sur le lien « source »
pour voir les messages SOAP échangés et ainsi observer les éventuelles
erreurs.
IV. Déployer un Web Service sur un serveur Tomcat
Une fois un Web Service développé et testé sur le serveur HTTP interne d’Eclipse, il est
possible de l’exporter pour le mettre en production sur un serveur final, dans notre cas
Tomcat.
1. Pour cela, sous Eclipse, dans le cadre « Package Explorer », aller sur le projet
contenant le Web Service, puis Clique droit > Export…, sélectionner Web > War et
cliquer sur « Next »
2. À la page suivante, dans le champ « Web Module », saisir un nom pour le Web
Service, puis sélectionner dans le champ suivant le chemin de destination pour
l’archive WAR exportée. Enfin cliquer sur le bouton « Finish ».
3. Par un navigateur Internet, accéder à la page d’administration de Tomcat.
10 / 12
4. Aller dans le menu « Tomcat Manager », puis dans le formulaire « WAR file to
deploy », sélectionner une archive WAR et cliquer sur le bouton « Deploy ».
5.
Le Web Service déployé doit maintenant se retrouver dans la liste des applications, en
haut de la page Web.
Si l’application n’est pas démarrée, cliquer sur le lien « Démarrer ».
Pour effacer le Web Service du serveur, il suffit de cliquer sur le lien « Undeploy »
11 / 12
Glossaire
Apache Axis :
Axis est un package qui fournit :






Un environnement pouvant soit fonctionner comme un serveur SOAP indépendant soit
comme un plug-in de moteurs de Servlet Java(en particulier Tomcat) ;
Une API pour développer des services web SOAP RPC ou à base de messages SOAP ;
Le support de différentes couches de transport : HTTP, FTP... ;
La sérialisation/désérialisation automatique d'objets Java dans des messages SOAP ;
Des outils pour créer automatiquement les WSDL correspondant à des classes Java ou
inversement pour créer les classes Java sur la base d'un WSDL ;
Des outils pour déployer, tester et monitorer des Web Services.
La licence d'Axis est l’Apache Software License.
SOAP :
Simple Object Access Protocol (SOAP) est un protocole de RPC (Remote Procedure Call :
appel de procédures à distance) orienté objet et bâti sur XML.
Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il autorise un
objet à invoquer des méthodes d'objets physiquement situés sur une autre machine. Le
transfert se fait le plus souvent à l'aide du protocole HTTP, mais peut également se faire par
un autre protocole, comme SMTP.
Le protocole SOAP est composé de deux parties :


Une enveloppe, contenant des informations sur le message lui-même afin de permettre
son acheminement et son traitement,
Un modèle de données, définissant le format du message, c'est-à-dire les informations
à transmettre.
SOAP a été initialement défini par Microsoft et IBM, mais est devenu depuis une
recommandation du W3C, utilisée notamment dans le cadre d'architectures de type SOA
(Service Oriented Architecture) pour les Web Services.
Web Service :
Un service Web est un ensemble de protocoles et de normes informatiques utilisés pour
échanger des données entre les applications de machines distantes.
Les logiciels écrits dans divers langages de programmation et sur diverses plateformes
peuvent employer des services Web pour échanger des données à travers des réseaux
informatiques comme Internet. Cette interopérabilité est due à l'utilisation de normes ouvertes
regroupées au sein du terme générique de SOA (Service Oriented Architecture ou
Architecture orientée services). L'OSI et le World Wide Web Consortium (W3C) sont les
comités de coordination responsables de l'architecture et de la standardisation des services
Web. Pour améliorer l'interopérabilité entre les réalisations de service Web, l'organisation
WS-I (Web Services Interoperability) a développé une série de profils pour faire évoluer les
futures normes impliquées.
12 / 12
Téléchargement