Applet - servlet : InvalidClassException
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:
Code:
ListFilmsApplet: iOException [java.io.InvalidClassException: BTMPPkg.Data.Films; incompatible types for field duree]
Voici le code de Films:
Code:
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 mon applet
Code:
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 56
| String 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;
}
} |
voici le code de ma servlet:
Code:
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 redis bien qu'en debug netbeans ca marche sans probleme, mais pas en local tomcat...
Je ne comprends vraiment pas....
Merci d'avance
Julien Garcia Gonzalez