Formation Services Web
© 2003-2004 Jean-Marc Vanel
Envoyer un courrier :   Dernière mise à jour (Last update):

Bonjour Laurent, Guy, Paul, Sébastien, Christian, Nicolas, Manuel, Valérie, Marc, Raphaël, Guillaume, Nazerat, Philippe, et Philippe. Restez branchés, les ajouts sur cette page ne font que commencer.

Sommaire
  1. Présentation
  2. Installation plug-in eclipse
  3. Axis
    1. Rappels: serveur Web J2EE
    2. Installation
    3. Travaux pratiques
      1. Services préinstallés avec Axis
        1. getVersion
        2. EchoHeaders
        3. StockQuoteService.jws
        4. Calculator.jws
      2. Le site xmethods.net
      3. Appel d'un service par client Java écrit à la main : CalcClient
      4. Déploiement avec un fichier deploy.wsdd de Axis
      5. Déploiement d'une classe Java via génération WSDL
        1. 1. Création du WSDL à partir de l'interface Java :
        2. 2. Création de squelettes Java (dans le répertoire src-gen ) à partir du WSDL :
        3. 3. Utilisation du deploy.wsdd généré à l'étape précédente pour déployer côté serveur
        4. 4. Utilisation des classes clientes générées à l'étape 2
      6. Sélection dans samples/userguide
        1. example5
  4. Développement de clients à partir du WSDL
    1. Avec WSDL2Java de Axis
    2. Avec WSIF
  5. Debug de services Web
    1. Moniteur Soap graphique d'Axis
  6. Installation SOAPpy (Python)
    1. Python
      1. Installation de Web Services for Python
      2. Vite en train
      3. Appel WS en Python plus élaboré
  7. Hyperliens
    1. Présentations
    2. Spécifications
    3. Articles, didacticiels, etc
    4. Livres
    5. Les implémentations
      1. Languages: Java, C++, Python, Perl, PHP
      2. Eclipse
      3. Divers
    6. Pages d'accueil
    7. Divers
  8. Exercices
  9. A VOIR
  10. Annexes
    1. Installer Ant
    2. Axis à partir des sources CVS
    3. Installer JWSDP (Java Web Services Developer Pack) de Sun

Présentation

Présentation constituant la présente Formation Services Web (en OpenOffice), Services Web en PPT; inspiré de Web Services Par Xavier Blanc, etc.

   Informatique distribuée, alias Middleware
   Concepts
   Cas d'utilisation
   ping-pong
   Exemples
   KIOslaves
   COM
   Corba, RMI
   Jini

Sécurité: rappels (nmap, distinguer plate-forme dev. et production), spécifique Axis

Messages consist of one or more SOAP elements inside an envelope, Headers and the SOAP Body.
SOAP has two syntaxes for describing the data in these elements,
Section 5, which is a clear descendant of the XML RPC system,
and XML Schema, which is the newer (and usually better) system.
Axis handles the magic of converting Java objects to SOAP data when it sends it over the wire or receives results.
SOAP Faults are sent by the server when something goes wrong; Axis converts these to Java exceptions.

Notion de chaînage des messages; noeuds SOAP et leurs rôles (next, ...)
comparaison Axis versus Apache-SOAP

Installation plug-in eclipse

Installer eclipse 3.1 le plus récent possible.
Mirroirs Français d'eclipse :  fr
Installer le plug-in WTP (Web Tools Platforms) de la fondation eclipse : déziper :
tutorials WTP ; Bottom up Web service supporting flexible projects

Sur www.eclipse-plugins.info : autres plugins Web Service (23)

Axis

Rappels: serveur Web J2EE

J2EE == standard Sun facilitant l'interopérabilité entre les serveurs et les applications Voir la page "Mes trucs Tomcat" au sujet du gestionnaire d'applications Web (http://localhost:8080/manager/html) qui est très utile pour relancer une application Web (alias contexte Web) sans relancer tout le serveur Tomcat.

Installation

(May 04, 2005) : Axis 1.2 Final is now available!

Dans les pages Documentation d'Axis, j'ai suivi "Installation".
Documentation Axis en local: axis/docs/index.html

Ce qu'il faut faire :
On peut alors lancer son navigateur sur: http://127.0.0.1:8080/axis/happyaxis.jsp, qui confirme que tout va bien.
La documentation évolutive de Axis est dans le Wiki Axis .

Installation à partir des sources

Créer un projet eclipse à partir de la distribution source. Exécuter la cible "war" de build.xml, en choisisant le JRE 1.4.X (ça ne compilera pas en Java 1.5 ). Ensuite copier le répertoire build/webapps/axis/ dans $WEB_SERVER/webapps/

Travaux pratiques

D'abord afficher la page d'accueil de l'application Web :
http://127.0.0.1:8080/axis/

On y voit qu'il y a deux servlets désactivées par défaut pour raisons de sécurité :
Pour activer ces deux fonctionalités, décommenter les déclarations
  <servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
dans
$WEB_SERVER/webapps/axis/WEB-INF/web.xml


Services préinstallés avec Axis

getVersion

Essayons les services préinstallés dans Axis. La liste de services se trouve ici : http://127.0.0.1:8080/axis/servlet/AxisServlet . On voit ce petit service qui renvoie le numéro de version d'Axis :
On peut y accéder avec une requête de type GET, donc avec un simple navigateur:
http://localhost:8080/axis/services/Version?method=getVersion/

En consultant le WSDL ci-dessus, il n'est pas difficile d'intuiter un appel avec Python:
$ python
>>> import SOAPpy
>>> client = SOAPpy.SOAPProxy("http://localhost:8080/axis/services/Version")
>>> print client.getVersion()
Apache Axis version: 1.2beta
Built on Mar 31, 2004 (12:47:03 EST)
C'est beau l'interopérabilité !

EchoHeaders

Maintenant essayons une méthode sans paramètres, mais qui renvoie un document XML:
http://localhost:8080/axis/EchoHeaders.jws?method=list
Ce service EchoHeaders renvoie les entêtes de la requête HTTP, envoyées par le navigateur.

StockQuoteService.jws

Maintenant, de plus en plus fort: une méthode avec un paramètre qui renvoie un type simple :
>>> client = SOAPpy.SOAPProxy("http://localhost:8080/axis/StockQuoteService.jws")              
>>> print client.getQuote("XXX")
66.25
Python utilise l'information de type renvoyée par SOAP pour renvoyer le bon type (float ici). On peut voir le message brut avec avec un navigateur:
http://localhost:8080/axis/StockQuoteService.jws?method=getQuote&arg=XXX

Calculator.jws

Un autre exemple de service avec paramètres, qui renvoie un entier : le service Calculator qui fait partie des exemples livrés avec Axis. Pour installer un service très simplement, il suffit de copier le source Java depuis 
samples/userguide/example2
dans:
$WEB_SERVER/webapps/axis/
avec le suffixe .jws . Cette fois côté client, pour changer, on ne passe pas par SOAPpy, mais on utilise wget, l'aspirateur de site en ligne de commande. Cela permet de voir les entêtes HTTP renvoyés par Axis. On utilise donc une requête de type GET; pour Axis, le nom des arguments est alors indifférent.
$ wget --save-headers -O - 'http://localhost:8080/axis/Calculator.jws?method=add&i=33&j=55'
--21:54:13-- http://localhost:8080/axis/Calculator.jws?method=add&i=33&j=55
=> `-'
Résolution de localhost... complété.
Connexion vers localhost[127.0.0.1]:8080...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: non spécifié [text/xml]
HTTP/1.1 200 OK
Date: Sun, 23 May 2004 19:54:13 GMT
Server: Jetty/4.2.18 (Linux/2.4.22-1.2188.nptl i386 java/1.4.2_01)
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml
Connection: close

[<=> ] 0 --.--K/s <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<addResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<addReturn href="#id0"/>
</addResponse>
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">88</multiRef>
</soapenv:Body>
</soapenv:Envelope>
[ <=> ] 590 576.17K/s

21:54:13 (576.17 KB/s) - « - » sauvegardé [590]

On peut voir le WSDL généré par Axis:
http://localhost:8080/axis/Calculator.jws?wsdl

Le site xmethods.net

Un exemple d'un appel de type GET sur le site xmethods.net :
http://services.xmethods.net/axis/getQuote?s=SUN
Ce site regroupe plein de services Web utilisables à des fin de démo.

Appel d'un service par un client Java écrit à la main : CalcClient

Remplacer dans setup.bat "repertoire_courant" par la bonne valeur.
setup.bat fixe le Classpath dans la variable d'environnement AXISCLASSPATH.

Lancer , en se mettant dans le répertoire de la distribution Axis :
setup.bat
java -classpath .;%AXISCLASSPATH% samples/userguide/example2/CalcClient add 11 22
Il faut avoir installé Calculator.jws côté serveur comme expliqué ci-dessus .

Déploiement avec un fichier deploy.wsdd de Axis

Utilisation du client d'administration en ligne de commande pour ajouter des nouveaux services (spécifiés dans un fichier deploy.wsdd ) :
$ cd /home/jmv/install2/axis-1_2
$ source setup.sh; echo $AXISCLASSPATH
$ cd samples/stock
$ java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient \
-lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
Processing file deploy.wsdd
<Admin>Done processing</Admin>
Qu'a-t-on fait ici ? Le programme AdminClient s'est adressé au service Web
http://localhost:8080/axis/services/AdminService
pour lui demander de déployer ce qui est spécifié dans le fichier deploy.wsdd .


Une autre façon d'exécuter
org.apache.axis.client.AdminClient
est d'utiliser un Run d'eclipse. Il suffit alors d'indiquer les même arguments avec soit le chemin complet de deploy.wsdd, soit entrer comme "Working directory":
axis-1_2/samples/stock
Pour regarder commodément deploy.wsdd - Truc avec vim pour associer le type xml au suffixe .wsdd

Appel d'un service par un client Java écrit à la main : GetQuote

On vérifie maintenant que ces services que l'on vient de déployer marchent (après les avoir compilés), grâce à un client en ligne de commande $AXIS_HOME/samples/stock/GetQuote.java :
# compiler l'exemple:
cd samples/stock; ant; cd ../..
# exécution:
java -cp $AXISCLASSPATH:build/classes/ samples.stock.GetQuote \
-lhttp://localhost:8080/axis/servlet/AxisServlet -uuser1 -wpass1 XXX
XXX: 55.25
Voici le code complet d'un client typique, laborieux et beaucoup de casts, par rapport à Python. Il Permet d'obtenir une quotation boursière, voir http://xmethods.com/ ( Delayed Stock Quote ).
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Service;

public class Client1 {
static void callWebService( String url, String ns, String stock_symbol ) throws ServiceException, RemoteException {
Service service = new Service();
Call call = service.createCall();

call.setTargetEndpointAddress( url );
call.setOperationName( new QName( ns, "getQuote" ) );
call.addParameter( "symbol", XMLType.XSD_STRING, ParameterMode.IN );
call.setReturnType( XMLType.XSD_FLOAT );

Float resu = (Float)call.invoke( new Object[] {stock_symbol} );
System.out.println(resu);
}

public static void main(String [] args) throws RemoteException, ServiceException {
callWebService( "http://64.124.140.30:9090/soap",
"urn:xmethods-delayed-quotes", "SUN" );
}
}

On peut appeler le service via le navigateur ainsi: http://localhost:8080/axis/getQuote?symbol=SUN

Déploiement d'une classe Java via génération WSDL

Suite au paragraphe précédent, on se demande comment éviter d'avoir à écrire ce fichier deploy.wsdd spécifique à Axis. Noua allons suivre la référence dans la doc. Axis:

1. Création du WSDL à partir de l'interface Java :

source setup.sh # remplit variable $AXISCLASSPATH
javac -g samples/userguide/example6/WidgetPrice.java # compile une interface
java -cp .:$AXISCLASSPATH org.apache.axis.wsdl.Java2WSDL -o wp.wsdl \
-l"http://localhost:8080/axis/services/WidgetPrice" -n "urn:Example6" \
-p"samples.userguide.example6" "urn:Example6" \
 samples.userguide.example6.WidgetPrice

2. Création de squelettes Java (dans le répertoire src-gen ) à partir du WSDL :

$ java -cp $AXISCLASSPATH:. org.apache.axis.wsdl.WSDL2Java -o src-gen \
-d Session -s -S true --testCase -Nurn:Example6 samples.userguide.example6 wp.wsdl
$ ls -l src-gen/samples/userguide/example6
total 40
-rw-rw-r-- 1 jmv jmv 1252 mai 24 17:04 deploy.wsdd
-rw-rw-r-- 1 jmv jmv 672 mai 24 17:04 undeploy.wsdd
-rw-rw-r-- 1 jmv jmv 451 mai 24 17:04 WidgetPrice.java
-rw-rw-r-- 1 jmv jmv 556 mai 24 17:04 WidgetPriceService.java
-rw-rw-r-- 1 jmv jmv 4919 mai 24 17:04 WidgetPriceServiceLocator.java
-rw-rw-r-- 1 jmv jmv 539 mai 24 17:04 WidgetPriceSoapBindingImpl.java
-rw-rw-r-- 1 jmv jmv 3813 mai 24 17:04 WidgetPriceSoapBindingSkeleton.java
-rw-rw-r-- 1 jmv jmv 6478 mai 24 17:04 WidgetPriceSoapBindingStub.java
Comment utiliser ces sources générés ?

3. Utilisation du deploy.wsdd généré à l'étape précédente pour déployer côté serveur

cd src-gen; javac -classpath .:$AXISCLASSPATH samples/userguide/example6/*.java
java -cp .:$AXISCLASSPATH org.apache.axis.client.AdminClient \
-lhttp://localhost:8080/axis/services/AdminService samples/userguide/example6/deploy.wsdd
 

4. Utilisation des classes clientes générées à l'étape 2

Voici un exemple de classe cliente, générée avec l'option --testCase de WSDL2Java :
import samples.userguide.example6.*;
public class MainTest {
public static void main (String[] args) throws Exception {
samples.userguide.example6.WidgetPrice binding = new WidgetPriceServiceLocator().getWidgetPrice();
((WidgetPriceSoapBindingStub)binding).setMaintainSession(true);
try {
((WidgetPriceSoapBindingStub) binding).setWidgetPrice("FOO", "$1.00");
} catch (java.rmi.RemoteException re) {
throw new Exception("Remote Exception caught: " + re );
}
try {
java.lang.String value = null;
value = binding.getWidgetPrice("FOO");
System.out.println("value: " + value);
if (value == null ||
!value.equals("$1.00"))
System.out.println("Wrong Price" + value);
} catch (java.rmi.RemoteException re) {
throw new Exception("Remote Exception caught: " + re );
}
}
}

Sélection dans samples/userguide

example5

Il montre l'utilisation de JavaBean via la déclaration d'un mapping.
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="OrderProcessor" provider="java:RPC">
<parameter name="className" value="samples.userguide.example5.BeanService"/>
<parameter name="allowedMethods" value="processOrder"/>
<beanMapping qname="myNS:Order" xmlns:myNS="urn:BeanService"
languageSpecificType="java:samples.userguide.example5.Order" />
</service>
</deployment>

Développement de clients à partir du WSDL

Avec WSDL2Java de Axis

Voir le paragraphe précédent.

Avec WSIF

Ayant téléchargé la version binaire depuis http://ws.apache.org/wsif/, on fixe le CLASSPATH ainsi:
for f in build/lib/*.jar lib/*.jar; do CLASSPATH=$CLASSPATH:$f ; done
CLASSPATH=$CLASSPATH:./build/samples
On peut alors lancer l'invoqueur dynamique:
java clients.DynamicInvoker 'http://localhost:8080/axis/services/Version?wsdl' getVersion
Reading WSDL document from 'http://localhost:8080/axis/services/Version?wsdl'
Preparing WSIF dynamic invocation
- WSIF0006W: Plusieurs WSIFProvider trouvés, supportant l' URI du même espace de nom 'http://schemas.xmlsoap.org/wsdl/soap/'. ('org.apache.w
sif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis, org.apache.wsif.providers.soap.apachesoap.WSIFDynamicProvider_ApacheSOAP') tro
uvé.
- WSIF0007I: Utilisation de WSIFProvider 'org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis' pour namespaceURI 'http:
//schemas.xmlsoap.org/wsdl/soap/'.
Executing operation getVersion
Result:
getVersionReturn=Apache Axis version: 1.2RC1
Built on Sep 26, 2004 (06:07:18 CEST)

Done!

Debug de services Web

tcpTunnelGui de Apache-SOAP

avec un script Python (voir ci-dessous)
avec WSIF (voir ci-dessus)

Moniteur Soap graphique d'Axis

SOAPMonitor User's Guide - Deploy a service which to be monitored with the soapmonitor handler

Pour lancer le moniteur Soap d'axis:
Editer dans la webapp axis:
WEB-INF/users.lst
ajouter:
admin mot_de_passe
Ensuite dans le répertoire d'installation de Axis:
source ./setup.sh
echo $AXISCLASSPATH
java -classpath $AXISCLASSPATH org/apache/axis/utils/SOAPMonitor \
-l http://localhost:8080/axis/servlet/AxisServlet
-u admin -w mot_de_passe &


Installation SOAPpy (Python)

Python

Plus puissant que Java, plus propre que PHP et Perl, orienté objet ... Python est incontournable. Voici un didacticiel en Français . Ensuite, il n'y a plus qu'à consulter la documentation: Python Library Reference . Il y a même Pydev, plug-in python pour eclipse !

Sur Redhat il faut installer le paquetage python-docs; ainsi la fonction help("nom_de_commande") marchera :
apt-get install python-docs
export PYTHONDOCS=/usr/share/doc/python-docs-2.2.3/html

Installation de Web Services for Python

Les WS avec Python sont particulièrement simples.
Il faut d'abord aller chercher et installer les dépendances:

Vite en train

Ensuite je ne peux mieux faire que citer l'échantillon de source:

QUICK START - A simple "Hello World" http SOAP server:
import SOAPpy
def hello():
return "Hello World"

server = SOAPpy.SOAPServer(("localhost", 8080))
server.registerFunction(hello)
server.serve_forever()
Et le client correspondant :
import SOAPpy
client = SOAPpy.SOAPProxy("http://localhost:8080/")
print client.hello()
On voit que l'aspect dynamique de Python est mis à profit. Pas besoin des étapes laborieuses d'un appel WS en Java avec l'API Sun officielle, Java API for XML-Based RPC (JAX-RPC) !

Appel WS en Python plus élaboré

Voici un exemple d'appel WS en Python plus élaboré, avec un argument et un espace de nommage XML pour le service. On consulte d'abord l'aide sur la classe:
>> help("SOAPpy.SOAPProxy")
Help on class SOAPProxy in SOAPpy:

SOAPpy.SOAPProxy = class SOAPProxy
| ################################################################################
| # SOAP Proxy
| ################################################################################
|
| Methods defined here:
|
| _SOAPProxy__call = __call(self, name, args, kw, ns=None, sa=None, hd=None, ma=None)
|
| __getattr__(self, name)
|
| __init__(self, proxy, namespace=None, soapaction=None, header=None, methodattrs=None, transport=<class SOAPpy.Clie
nt.HTTPTransport>, encoding='UTF-8', throw_faults=1, unwrap_results=None, http_proxy=None, config=<SOAPpy.Config.SOAPC
onfig instance>, noroot=0, simplify_objects=None)
|
| _callWithBody(self, body)
|
| invoke(self, method, args)
Comme exemple de service, on va prendre Delayed Stock Quote, fourni par xmethods.net; on extrait de la doc cet exemple d'appel:
<SOAP-ENV:Body>
<ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<symbol xsi:type="xsd:string">IBM</symbol>
</ns1:getQuote>
</SOAP-ENV:Body>
A partir de là, voici le code Python :
import SOAPpy
client = SOAPpy.SOAPProxy("http://66.28.98.121:9090/soap",
 namespace="urn:xmethods-delayed-quotes" )
print client.getQuote(symbol="IBM")

Hyperliens

Given below is a woefully incomplete list (in no particular order) of great starting places:

Présentations

Présentation constituant la présente Formation Services Web (en OpenOffice), en PPT;
inspiré de Web Services Par Xavier Blanc, à l'Association Libre Cours : sous ce joli nom, il y a plein de cours informatiques.

Voici une sélection de quelques présentation trouvées par Google avec ces mots-clés :
soap services web wsdl filetype:ppt et langue française

Spécifications

Java API for XML-Based RPC (JAX-RPC)
W3C: XML Protocol Working Group, which is part of the Web Services Activity.
W3C SOAP page : SOAP Specification Document - SOAP Version 1.2 Part 0: Primer.
Document Language Original Translator Date
SOAP Version 1.2, partie 0: Préliminaire French Rec: SOAP Version 1.2 Part 0: Primer Carine Bournez 24 June 2003
SOAP Version 1.2 Partie 1: Structure pour l'échange de messages French REC: SOAP Version 1.2 Part 1: Messaging Framework Carine Bournez 24 June 2003
SOAP Version 1.2 Partie 2: Ajouts French PR: SOAP Version 1.2 Part 2: Adjuncts Carine Bournez 24 June 2003

changes and benefits from SOAP/1.1

Web Services Description Language (WSDL) 2.0
Note W3C WSDL 1.1 Web Services Description Language (WSDL) Specification Documents
The XML Security project is aimed at providing implementation of security standards for XML. Currently the focus is on the W3C standards :

Once these are implemented, XML Key Management is likely to be the next focus for the project.

Articles, didacticiels, etc

The JavaTrademarked Web Services Tutorial de Sun
An Introduction to XML Digital Signatures.
Linux Magazine | August 2002 | FEATURES | Creating Web Services with AXIS
Using the SOAP Protocol with Java terminal node, edge points ... encode a graph of objects 
webservices.xml.com: WSDL Tales From The Trenches, Part 2... Using the import keyword, you can separate a WSD into ... The downside is that WSDL 1.1
is not very clear ... same rules were meant to apply as with W3C XML Schema. ...
Using XML schemas effectively in WSDL design - HP Dev Resource ... - ... Agenda. » Introduction. » XML Schema design styles. » Using XML namespaces
effectively. » Extending import to enhance WSDL reusability. ...
new!  A 5 Minute Intro to XML
REST Tutorial [PowerPoint]    [HTML] Last updated June 26, 2002

Livres

Web Services Essentials Feb 2002
avec exemples, mais seulement Apache SOAP, pas Axis :-(

Les implémentations

Languages: Java, C++, Python, Perl, PHP

Eclipse

Divers

Pages d'accueil

http://java.sun.com/webservices/

Divers

IBM Software: Solutions: Web services by IBM: UDDI


WSDL client generic ????
http://soapclient.com/ : SoapClient.com is a resource center for SOAP developers. We provide product information, SOAP tools, and SOAP services such as web search and data access.

Web Services - [ Traduire cette page ]
... October 2003: Semantic Web Services Interest Group launched; June 2003: SOAP Version 1.2 released as a W3C Recommendation (press release, testimonials, changes ...
www.w3.org/2002/ws/ - 20k - 21 mai 2004 - En cache - Pages similaires

Google Web APIs - Home - [ Traduire cette page ]

... Google uses the SOAP and WSDL standards so a developer can program in his or ... and a WSDL file for writing programs on any platform that supports web services. ...
www.google.com/apis/ - 12k - En cache - Pages similaires

WebServices.Org - The Web Services Industry Portal - - [ Traduire cette page ]

... Your WSDL. ( 19.09.2003 10:04 ). SOAP has received considerable attention as a flagship standard for interoperable services; however, as Web services move to ...
www.webservices.org/ - 93k - 21 mai 2004 - En cache - Pages similaires

WebServices - Axis - [ Traduire cette page ]

... This project is a follow-on to the Apache SOAP project. ... Axis 1.1 has proven itself to be a reliable and stable base on which to implement Java Web Services. ...
ws.apache.org/axis/ - 13k - 21 mai 2004 - En cache - Pages similaires

developerWorks : Web services - [ Traduire cette page ]

... Extend JAX-RPC Web services using SOAP headers: Learn how SOAP handlers create and process SOAP message headers and how to configure handlers appropriately. ...
www-106.ibm.com/developerworks/webservices/ - 57k - En cache - Pages similaires

Web Services Developer Center Home - [ Traduire cette page ]

... COM Components Integrating Web Services and COM Components Eliminate organizational dependence on the SOAP Toolkit to expose COM components as Web services. ...
msdn.microsoft.com/webservices/ - 36k - 21 mai 2004 - En cache - Pages similaires

WSDL, SOAP, Web Services Search Engine and Web Service Tracking - [ Traduire cette page ]

Web Services Library and SOAP Schema Library. A library of web services applications. Web ... WSDL / SOAP Web Services Search Engine. The ...
www.salcentral.com/ - 32k - 21 mai 2004 - En cache - Pages similaires
Web Services/SOAP and CORBA - [ Traduire cette page ]Web Services/SOAP and CORBA. April 27, 2002. ... 4 Disadvantages of SOAP/Web Services. There are quite a few issues with Web Services and SOAP. ... www.xs4all.nl/~irmen/comp/CORBA_vs_SOAP.html - 49k

Web Services Over SSL - HOW TO - [ Traduire cette page ]
This HOWTO guide explains steps involved in (i) deploying SSL accessible Java
Web Services in Servlet based SOAP platforms such as Apache Axis or HP Web ...
www.pankaj-k.net/WSOverSSL/WSOverSSL-HOWTO.html - 24k

HOWTO : Installing Web Services with Linux / Tomcat / Apache ... - [ Traduire cette page ]
HOWTO : Installing Web Services with. Linux / Tomcat / Apache / Struts
/ Postgresql / OpenSSL / JDBC / JNDI. Welcome to LinuxJava.net. ...
www.linuxjava.net/howto/webapp/ - 36k


Exercices

Voir ici les sujets

A VOIR

Annexes

Installer Ant

Axis à partir des sources CVS

Télécharger et compiler:
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout ws-axis
cd java
unset CLASSPATH
ant war
[...]
war:
[copy] Copying 8 files to /usr/src/ws-axis/java/build/webapps/axis/WEB-INF/lib
[copy] Copying 27 files to /usr/src/ws-axis/java/build/webapps/axis/samples
[copy] Copied 21 empty directories to 13 empty directories under /usr/src/ws-axis/java/build/webapps/axis/samples
[copy] Copying 56 files to /usr/src/ws-axis/java/build/webapps/axis/WEB-INF/classes/samples
[jar] Building jar: /usr/src/ws-axis/java/build/axis.war

BUILD SUCCESSFUL
cp build/axis.war $WEBAPPS # déployer Axis

Installer JWSDP (Java Web Services Developer Pack) de Sun

I faut télécharger une version spéciale de Tomcat, ou alors le gros serveur J2EE de Sun.
Ayant donné un nom d'utilisateur et la localisation du Tomcat spécial, on a le message suivant :
Java(TM) Web Services Developer Pack 1.4 sera installé à l'emplacement ci-après :
/home/jmv/usr2/jwsdp-1.4
avec les fonctions suivantes :
XML Digital Signature Version 1.0 EA XML and Web Services Security Version 1.0 EA3 WS-I Attachments Sample Application Version 1.0 EA JAXB Version 1.0.3 (Java Architecture for XML Binding) JAXP Version 1.2.6 (Java API for XML Processing) JAXR Version 1.0.6 (Java API for XML Registries) JAX-RPC Version 1.1.2 (Java API for XML-based RPC) SAAJ Version 1.2.1 (SOAP with Attachments API for Java) JSTL Version 1.1 (JavaServer Pages(TM) Standard Tag Library) Java WSDP Registry Server Version 1.0_06
pour une taille totale de :
75 Mo
On a à la fin ce message pas très clair:
In this version of Java(TM) Web Services Developer Pack, the org.apache JAXP packages have been renamed.  
As a result, the use of the java.endorsed.dirs system property is no longer necessary for
standalone Java(TM) applications which use JDK 1.4.x to work.
If you write standalone Java applications, all that is now needed is to include the JAXP jar files
at the beginning of the CLASSPATH.
On nous indique ensuite que les pages de doc. sont ici :
jwsdp-1.4/docs/GettingStarted.html
et qu'on démarre tomcat de la façon habituelle:
/home/jmv/usr2/tomcat-jwsdp-1.4/bin/catalina.sh start
Web Services Tutorial - June 21, 2004
http://java.sun.com/webservices/docs/1.4/tutorial/doc/index.html


Truc avec vim pour associer le type xml au suffixe .wsdd : ajouter dans .vim/filetype.vim :
augroup filetypedetect
     au! BufNewFile,BufRead *.wsdd     setf xml
augroup END