Groupe 1C (normes)

Date de création : 12 mai 2003
Dernière modification : 15 mai 2003
Diffusion : internet

Présentation des web-services

Problématique U-Portal

Dans U-Portal se pose le problème de récupérer des données pour les afficher ensuite dans des canaux. La récupération de ces données peut soit s'envisager de manière directe via une connection base de données soit en interrogeant un service distant, un web-service.
Par ailleurs, l'utilisation de certaines fonctionnalités proposées par des applications existantes (dans d'autres langages que Java) pourraient se faire depuis le portail à l'aide d'appels de web-services.
L'interêt du web-service est donc qu'il permet de centraliser la logique applicative d'une application sans avoir à la reporter dans U-Portal (modularité), qu'il permet de décharger la machine faisant tourner le portail et qu'il permet d'obtenir des données issues des bases de gestion par exemple sans autoriser une connexion directe entre la machine du portail et ces bases.
L'inconvénient, à l'heure actuelle, est que c'est une technologie nouvelle pour nous dont il reste à démontrer la faisabilité, la performance et la prise en charge de nos contraintes de sécurité (surtout pour le CAS).

Le but de cette présentation est de donner les éléments permettant de comprendre l'infrastructure liée aux web-services ainsi que d'étudier l'implémentation de cette architecture en Java.

Présentation de l'architecture web-services (ou services web)

Précisions sur SOAP

Précisions sur WSDL

Java et les web-services

AXIS

WSIF

Apache XML-RPC

Exemples

Appel d'un service-web avec WSIF

package fr.univ_nancy2.gest;
    public interface IVerifINE 
          extends java.rmi.Remote {
    public java.lang.String verifINE(java.lang.String ACode_INE) throws java.rmi.RemoteException;
    }
import org.apache.wsif.WSIFService;
    import org.apache.wsif.WSIFServiceFactory;
    import org.apache.wsif.WSIFException;
    import java.rmi.RemoteException;
    import org.tempuri.IVerifINE;
    public class Run {
    public static void main(String[] 
          args) {
    try {
    if (args.length != 2) {
    System.exit(1);
    }
    
    // create a service factory
    WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
    
    // parse WSDL
    WSIFService service = factory.getService( args[0], null, null, "http://gest.univ-nancy2.fr/ws-bin/VerifINE/", 
    "IVerifINE");
    // create the stub
    IVerifINE stub = (IVerifINE) service.getStub( IVerifINE.class);
    
    // do the invocation
    java.lang.String res= stub.verifINE(args[1]);
    System.out.println(res);
    } catch (WSIFException we) 
          {
    System.out.println( "Error while executing sample, received an exception 
          from WSIF; details:");
    we.printStackTrace();
    } catch (RemoteException re) {
    System.out.println( "Error while executing sample, received an exception 
          due to remote invocation; details:");
    re.printStackTrace();
    } } }

Conception d'un service-web en PHP

Conception d'un service-web en ASP

Sources

Services Web Open Source chez Wrox

Services Web avec SOAP, WSDL, UDDI, ebXML chez Eyrolles

Developping Java Web Services chez Wiley