Bonjour,
je dois pour mes cours, créer un site web html/applet/servlet/jsp.
J'ai un soucis lors d'une communication entre mon applet et une servlet qui récupère des données sur un serveur. J'envoie un objet sérialisé sur le stream ouvert entre l'applet et la servlet.
En debug (lancement applet sur netbeans) pas de soucis tout se passe correctement.
En réel, avec déploiement sur Tomcat, la web application lancement l'applet ne fonctionne pas et me lance:
Voici le code de Films:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ListFilmsApplet: iOException [java.io.InvalidClassException: BTMPPkg.Data.Films; incompatible types for field duree]
voici le code de mon 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 static final long serialVersionUID = 6236897322967564425L; private int id; private String Nom; private Date date_de_sortie; private double duree; private String couleur; private String mpaa; private String genre; private String acteur; private String producteur; private String maisonProduction; private String qualite; ...
voici le code de ma 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56String linkServlet = "http://localhost:8084/Authentification/servletBTPM"; try { URL URLServlet = new URL(linkServlet); URLConnection connect = URLServlet.openConnection(); connect.setUseCaches(false); connect.setDefaultUseCaches(false); connect.setRequestProperty("Content-Type", "application/octet-stream"); connect.setDoOutput(true); connect.setDoInput(true); OutputStream os = connect.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(os); oos.writeObject("listingFilms"); oos.flush(); InputStream is = connect.getInputStream(); ObjectInputStream ois = new ObjectInputStream(is); System.out.println("Je suis ici"); Object ret = ois.readObject(); System.out.println("Je suis ici2"); if(ret.getClass().getSimpleName().equals("ListFilms")) { ListFilms lfilms = (ListFilms)ret; Vector<Vector<String>> films = lfilms.getFilms(); Films film = lfilms.getFilm(0); String s = String.valueOf(film.getDuree()); LabTitre.setText(film.getNom()); LabDateSortie.setText(film.getDate_de_sortie().toString()); LabDuree.setText(s); LabCouleur.setText(film.getCouleur()); LabMPAA.setText(film.getMpaa()); LabGenre.setText(film.getGenre()); LabActeur.setText(film.getActeur()); LabProducteur.setText(film.getProducteur()); LabMaisonProd.setText(film.getMaisonProduction()); LabQualite.setText(film.getQualite()); /*for(int i=0;i<films.size();i++) { F }*/ return; } if(ret.getClass().getSimpleName().equals("ACK")) { ACK ack = (ACK)ret; System.out.println("ack: "+ack.getCode()+" - "+ack.getMessage()); return; } }
Je redis bien qu'en debug netbeans ca marche sans probleme, mais pas en local tomcat...
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 response.setContentType("text/html"); String filename = "/Config/config.cfg"; ServletContext context = getServletContext(); URL pathConfig = context.getResource(filename); String pathConfigString = pathConfig.toString(); InputStream inp = context.getResourceAsStream(filename); OutputStream os = response.getOutputStream(); response.setContentType("application/octet-stream"); ObjectInputStream ois = new ObjectInputStream(request.getInputStream()); ObjectOutputStream oos = new ObjectOutputStream(os); try { Object received = ois.readObject(); if(received.getClass().getSimpleName().equals("String")) { if(((String)received).equals("listingFilms")) { BTMPClient btmp = new BTMPClient(inp); ListFilms films = new ListFilms(); films = btmp.recupFilm(films); oos.writeObject(films); oos.flush(); btmp.quit(); } } } catch (IOException iOException) { System.out.println("ServletBTMP IOException ["+iOException+"]"); iOException.printStackTrace(System.out); oos.writeObject(new ACK(9,"ServletBTMP IOException ["+iOException+"]")); oos.flush(); } catch (ClassNotFoundException classNotFoundException) { oos.writeObject(new ACK(9,"ServletBTMP ClassNotFoundException ["+classNotFoundException+"]")); oos.flush(); }
Je ne comprends vraiment pas....
Merci d'avance
Julien Garcia Gonzalez
Partager