Bonjour,

Dans une "application", j'ai une applet qui sert d'interface Utilisateur et plusieurs servlets.

Ce que je souhaite faire : "Tracer" l'activité de l'utilisateur au fil des appels des servlets (chaque bouton de l'interface de l'applet se connecte à une servlet pour effectuer un certain traitement)

L'idée que j'ai trouvée est d'utiliser HttpSession combinée avec les cookies (le tuto que j'ai lu n'était pas très explicite sur ce point, donc j'ai cherché un peu mais...).

Au niveau de l'applet, j'ai ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        try
           {
            // Connexion à la servlet
            URL url=new URL("http://localhost:9000/ProjetEntreprise/embauche");
            //System.out.println("Connexion à la servlet...");
            URLConnection connexion=url.openConnection();            
            connexion.setDoOutput(true);
 
            connexion.setDoInput(true);
            connexion.setRequestProperty("cookie",        connexion.getHeaderField("set-cookie"));
 
[...]
 
            // Récupération du flux de sortie
            ObjectOutputStream fluxsortie = new ObjectOutputStream(connexion.getOutputStream());
            // Envoi des infos sur l'employé à embaucher
            System.out.println("Envoie des données à la servlet");
            fluxsortie.writeObject(emp);
 
[...]
Au niveau de la servlet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
        if(request.getSession(true).getAttribute("nomClient") == null)
        {
            name = "Client" + Math.round((Math.random() + 1)* (Math.random() + 2) * 5 + 3);
            System.out.println("[Session][Embauche]Ce client n'a pas encore de nom ! On vas l'appeler " + name);
            request.getSession().setAttribute("nomClient", name);
            Cookie cookie = new Cookie(request.getSession().getId(), "");
            cookie.setMaxAge(60*2);
            response.addCookie(cookie);
        }
        else
            System.out.println("[Session][Embauche]Ce client s'appele " + name);
En l'état, rien ne marche : j'ai l'erreur

java.lang.IllegalStateException: Already connected
Et si je retire la ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
connexion.setRequestProperty("cookie", connexion.getHeaderField("set-cookie"));
Tout fonctionne bien, enfin, je n'ai pas de cookie ...

Comment il faut procéder s'il vous plait ?

Merci