Si vous avez suivi les épisodes précedents, vous disposez maintenant d'un serveur de webservices opérationnel proposant le service LdapAuthentService qui requiert les paramètres login et password.
Le wsdl (fichier de définition du webservice en xml) est disponible à l'adresse http://localhost:8080/axis2/services/LdapAuthentService?wsdl
Le script wsdl2java.sh d'Axis2 va nous permettre de générer une classe client d'appel à ce webservice appelée "stub". En gros cette classe se charge de l'aspect communication via des échanges en xml.

$ $AXIS2_HOME/bin/wsdl2java.sh -d adb -uri http://localhost:8080/axis2/services/LdapAuthentService?wsdl -p fr.quaquin.clement.ldap.client -s -o build/client

Options :
  • L'option -d adb signifie que nous choisissons le databinding adb (recommandé)
  • L'option -uri permet d'indiquer l'adresse du fichier de définition wsdl
  • L'option -p permet d'indiquer un package java de destination pour la classe
  • L'option -s indique que nous fonctionnerons en mode synchrone
  • L'option -o permet d'indiquer un dossier dans lequel générer le code

Génération de l'archive .jar

$ cd build/client/
$ ant jar.client


Le fichier LdapAuthentService-test-client.jar est généré dans build/lib . Je l'ajoute aux librairies du projet.
Maintenant, je crée une classe ClientConnect utilisant le stub pour communiquer avec le webservice :

package fr.quaquin.clement.ldap;

import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import fr.quaquin.clement.ldap.client.LdapAuthentServiceStub;

public class ClientConnect {

    public static void main(String[] args) {
        LdapAuthentServiceStub stub null;
        String url="http://localhost:8080/axis2/services/LdapAuthentService";

        // Contact avec le serveur via le Stub
        try {
            stub new LdapAuthentServiceStub(url);
            
        catch (AxisFault e) {e.printStackTrace();}
        
        // Création de l'objet de connexion 
        // avec initialisation des paramètres
        LdapAuthentServiceStub.GetConnectionLDAP myconnection 
            new LdapAuthentServiceStub.GetConnectionLDAP();
        myconnection.setLogin("cquaquin");
        myconnection.setPassword("titi");
        
        // Tentative de connexion et affichage du code retour 
        // si le serveur répond
        try {
            LdapAuthentServiceStub.GetConnectionLDAPResponse myrep 
                stub.getConnectionLDAP(myconnection);
            System.out.println("Code retour : "+myrep.get_return());
        }catch (RemoteException e) { e.printStackTrace(); }
    }
}

Et je l'éxécute :

Code retour : OK



Références :
Generating a Client using ADB
Tutorial Axis2 : Génération des stubs grace à wsdl2java
Tutorial Axis2 : Réalisation du client du service web
Clem blog : Authentification LDAP en java
Clem blog : Authentification LDAP en java/Webservice -- 2ème partie