Je crée d'abord une classe plus générique, contenant deux méthodes publiques getConnectionLDAP et getEmail :

package fr.quaquin.clement.ldap;
import java.util.Hashtable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.naming.*;
import javax.naming.directory.*;

/*
 * Classe permettant de vérifier que l'utilisateur a bien tapé 
 * son login/mot de passe contenu dans l'annuaire LDAP distant
 */
public class AuthenticateUserWS {
    private String dn="dc=home,dc=com";
    private String host="ldap://localhost:389/";
    private DirContext ctx;
    
    public String getConnectionLDAP(String loginString password){
        Hashtable env loadEnv(login,password);
        
        if (connectionOk(env)) return "OK";
        else return "KO";
    }
    
    public String getEmail(String loginString password){
        Hashtable env loadEnv(login,password); 
        String email="";
        
        if (connectionOk(env)){
            String attrID "mail";
            try {
                email=applyRegexp(ctx.getAttributes("uid="+login+",ou=people"
                        new String[]{attrID}).get(attrID).toString());
            catch (NamingException e) {
                e.printStackTrace();
            }
        }
        return email;
    }
    
    private boolean connectionOk(Hashtable env) {
        // Create the initial context
        try {
            ctx new InitialDirContext(env);
            return true;
        catch (NamingException e) {
            e.printStackTrace();
            return false;
        }
    }

    /*
     * Préparation du tableau de paramètres 
     * envoyés au contexte Directory. 
     */
    private Hashtable loadEnv(String loginString password) {
        Hashtable env new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY"com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URLhost+dn);
    
        env.put(Context.SECURITY_AUTHENTICATION"simple");
        env.put(Context.SECURITY_PRINCIPAL"uid="+login+",ou=people,dc=home,dc=com");
        env.put(Context.SECURITY_CREDENTIALSpassword);
        return env;
    }
    
    /*
     * OpenLdap renvoie "mail= toto@titi.com" pour l'attribut mail
     * J'utilise donc ici une expression régulière pour extraire
     * l'email.
     */
    private String applyRegexp(String rawTxt) {
        String re1=".*?";
        String re2="([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})";

        Pattern p Pattern.compile(re1+re2,Pattern.CASE_INSENSITIVE Pattern.DOTALL);
        Matcher m p.matcher(rawTxt);
        if (m.find())
        {
            String email1=m.group(1);
            return email1.toString();
        }
        else return null;
        
    }

}

Télécharger ensuite le war d'axis2 et le déployer sur tomcat.
Télécharger également les plugins Axis2 Archive Wizard pour Eclipse qui vont nous servir à générer une archive .aar déployable sur le serveur axis (génération des classes compilées ainsi que le fichier service.xml)

Une fois que ces plugins sont installés, dans Eclipse sélectionner le menu "File - New - Other" puis l'item "Axis2 Wizards - Axis2 Service Archiver" et cliquer sur "next" (à propos des boutons "next", je vous renvoie à la note traitant du comportement d'Eclipse sous ubuntu 9.10).
Sélectionner le chemin contenant vos classes compilées puis "next".
Cocher "skip WSDL" puis "next" 2 fois.
Cocher "Generate the service xml automatically" puis "next".
Sélectionner les méthodes publiques uniquement.



Puis choisir le chemin des services axis pour créer l'archive finale, typiquement $TOMCAT_HOME/webapps/axis2/WEB-INF/services/

Le WebService est déployé, on peut le visualiser à cette adresse



En cliquant sur le titre du webservice, on obtient son fichier de définition wsdl qui permet la communication avec le webservice depuis différentes applications.
On peut déjà tester que le webservice fonctionne en tapant la méthode et ses paramètres dans l'URL :
http://localhost:8080/axis2/services/LdapAuthentService/getConnectionLDAP?login=cquaquin&password=titi
ou
http://localhost:8080/axis2/services/LdapAuthentService/getEmail?login=cquaquin&password=titi
Le xml généré contient les valeurs de retour que nous avons définies dans la classe java.


Références :
Axis2 Quick Start Guide
Howto Axis2 : Tutoriel sur l’utilisation des Web Services avec Axis2
Regular expression generator
Tutorial Axis2 : Réalisation du code métier serveur