Bonjour à tous,

Je travaille avec JSF - RichFaces.
Mon but est d'envoyer des données de l'utilisateur (Nom, Prénom...) de l'applet vers la servlet (ces données sont stockées provisoirement en dur dans l'applet). Ces données permettront de créer une instance de l'objet User (qui représente un Backing Bean) pour pouvoir afficher automatiquement une table RichFaces contenant les données du User sur ma page web.
Mais je n'arrive pas faire communiquer mon applet avec une servlet. De plus l'applet n'ayant aucun autre traitement il faut que la connexion et l'envoi des données soient faites à l'ouverture de la page.

En cherchant sur le net j'ai pu arriver à ce résultat :

web.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<servlet>
		<servlet-name>Com Servlet</servlet-name>
		<servlet-class>com.***.***.servlet.ComServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Com Servlet</servlet-name>
		<url-pattern>/ComServlet</url-pattern>
	</servlet-mapping>
xhtml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
	<applet width="0" height="0" alt="Please wait" name="DataApplet" code="com.***.***.applet.DataApplet.class" codebase="class/"></applet>
Applet :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.***.***.applet;
 
import java.applet.Applet;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
 
/**
 * Applet fournissant les données a l'application.
 *
 */
public class DataApplet extends Applet {
 
  /**
   * Méthode d'initialisation de l'applet.
   */
  public void init() {
 
    try {
 
      URL servletUrl = new URL("http://localhost:8090/nomAppli/ComServlet");
      URLConnection servletUrlC = servletUrl.openConnection();
 
      servletUrlC.setDoInput(true);
      servletUrlC.setDoOutput(true);
      servletUrlC.setUseCaches(false);
      servletUrlC.setDefaultUseCaches(false);
      servletUrlC.setRequestProperty("Content-Type", "application/octet-stream");
 
      servletUrlC.connect();
 
      ObjectOutputStream out = new ObjectOutputStream(servletUrlC.getOutputStream());
      out.writeObject(new String("test comm applet -> servlet"));
      out.flush();
      out.close();
 
    } catch (MalformedURLException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    } catch (IOException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    }
 
  }
}
Servlet :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
/**
 * 
 */
package com.***.***.servlet;
 
import java.io.IOException;
import java.io.ObjectInputStream;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class ComServlet extends HttpServlet{
 
  public void doPost(HttpServletRequest req, HttpServletResponse res) 
  throws ServletException, IOException {
 
    try {
      ObjectInputStream in = new ObjectInputStream(req.getInputStream());
 
      System.out.println("Message reçu :" + in.readObject());
 
    } catch (ClassNotFoundException E1) {
      // TODO Auto-generated catch block
      E1.printStackTrace();
    }
  }
 
  public void doGet(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException {
    doPost(req,res);
  }
}
Quand j'accède à : http://localhost:8090/nomAppli/ComServlet la servlet est bien exécutée mais l'applet n'y accède pas.

Je me demande si ça viendrait pas du cycle de vie de JSF (l'applet étant exécutée en fin de cycle) mais mes compétences sur ce sujet sont faibles.

Qu'en pensez-vous?