Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
560 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  probleme de sérialisation

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de sérialisation

n°625345
lorill
Posté le 29-01-2004 à 20:47:55  profilanswer
 

bon, rapide récapitulatif du probleme :
 
J'ai un objet qui contient une HashMap.  
Je sérialise cet objet. Je le récupere par désérialisation. Je le resérialise, et dans certains cas, le résultat de la sérialisation est différent, suivant la version de la jvm semble-t'il.
 
Le code qui montre le probleme :
 
L'objet sérialisé : CalendarAction
 
Le programme de test :

Code :
  1. import java.io.*;
  2.  
  3.   public class TestSerialisation
  4.   {
  5.      public static void main(String [] args)
  6.      throws Exception
  7.      {
  8.         test("end" );
  9.         test("endTime" );
  10.         test("plop" );
  11.      }
  12.      
  13.      private static void test(String hashKey)
  14.      throws Exception
  15.      { 
  16.         //creation d'un objet
  17.         CalendarAction ca = new CalendarAction(CalendarAction.GET_EVENTS_FOR_USER);
  18.         ca.set("user", "toto" );
  19.         ca.set("showAll", new Boolean(false));
  20.         ca.set("start", new Long(1919));
  21.         ca.set(hashKey, new Long(93943)); //seule cette clef varie
  22.        
  23.    
  24.         //fichiers de stockage qu'on va comparer  
  25.         String origine = "/tmp/test_" +hashKey +"_.1";
  26.         String copie = "/tmp/test_" +hashKey +"_.2";
  27.        
  28.         //premiere serialization
  29.         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(origine));
  30.         oos.writeObject(ca);
  31.         oos.close(); 
  32.      
  33.         //recuperation d'une copie par deserialization
  34.         ObjectInputStream ois = new ObjectInputStream(new FileInputStream(origine));
  35.         CalendarAction caCopy = (CalendarAction)ois.readObject();
  36.         ois.close();
  37.        
  38.         //serialization de la copie
  39.         ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(copie));
  40.         oos2.writeObject(caCopy);
  41.         oos2.close();   
  42.      }
  43.   }


 
Ce que ca donne :


vincent@laptop:/tmp$ diff test_end_*
vincent@laptop:/tmp$ diff test_endTime_*
Les fichiers binaires test_endTime_.1 et test_endTime_.2 sont différents.
vincent@laptop:/tmp$ diff test_plop_*
vincent@laptop:/tmp$


 
avec un jdk1.4.2 ou 1.4.1, ca merde bien avec "endTime" en clef de la HashMap.
 
avec un jdk1.4.0 par contre, ca marche avec "endTime" mais ca plante avec "end".
 
 
Quelqu'un a une idée ?

mood
Publicité
Posté le 29-01-2004 à 20:47:55  profilanswer
 

n°625389
the real m​oins moins
Posté le 29-01-2004 à 21:37:52  profilanswer
 

ton test de tout à l'heure est tjs valide? (flemme de faire un copier/coller) ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°625396
the real m​oins moins
Posté le 29-01-2004 à 21:40:10  profilanswer
 

sur mon bsd ça bloque apres "generatin keypair" [:zebra33]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°625442
lorill
Posté le 29-01-2004 à 21:59:14  profilanswer
 

the real moins moins a écrit :

ton test de tout à l'heure est tjs valide? (flemme de faire un copier/coller) ?


oui mais il fait des choses inutiles (la signature)


Message édité par lorill le 29-01-2004 à 21:59:28
n°625443
lorill
Posté le 29-01-2004 à 22:00:14  profilanswer
 

the real moins moins a écrit :

sur mon bsd ça bloque apres "generatin keypair" [:zebra33]


alors copie/colle cet exemple :o

n°625451
the real m​oins moins
Posté le 29-01-2004 à 22:11:08  profilanswer
 


-bash-2.05b$ java -version
java version "1.4.1-p3"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-p3-root_26_jun_2003_04_44)
Java HotSpot(TM) Client VM (build 1.4.1-p3-root_26_jun_2003_04_44, mixed mode)
-bash-2.05b$ java TestSerialisation
-bash-2.05b$ diff /tmp/test_end_*
-bash-2.05b$ diff /tmp/test_endTime_.*
Binary files /tmp/test_endTime_.1 and /tmp/test_endTime_.2 differ
-bash-2.05b$


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°625667
lorill
Posté le 30-01-2004 à 08:13:17  profilanswer
 

the real moins moins a écrit :


-bash-2.05b$ java -version
java version "1.4.1-p3"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-p3-root_26_jun_2003_04_44)
Java HotSpot(TM) Client VM (build 1.4.1-p3-root_26_jun_2003_04_44, mixed mode)
-bash-2.05b$ java TestSerialisation
-bash-2.05b$ diff /tmp/test_end_*
-bash-2.05b$ diff /tmp/test_endTime_.*
Binary files /tmp/test_endTime_.1 and /tmp/test_endTime_.2 differ
-bash-2.05b$




merci, mais j'ai bien vu qu'avec une jvm>=1.4.1 ca donne ca.
la question, c'est pourquoi ? ou est l'erreur ?

n°625693
lorill
Posté le 30-01-2004 à 08:38:41  profilanswer
 

bon, j'ai trouver comment le contourner, mais ca m'intrigue quand même...

n°626035
the real m​oins moins
Posté le 30-01-2004 à 13:09:21  profilanswer
 

lorill a écrit :

bon, j'ai trouver comment le contourner, mais ca m'intrigue quand même...

comment ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°626085
lorill
Posté le 30-01-2004 à 13:28:15  profilanswer
 


mon soucis a la base c'est de signer ce qui est envoyé, pour m'assurer que c'est bien la personne déclarée comme emetteur qui envoie.
 
la, je serialisait l'objet et je signait les octets résultats. Vu que visiblement 2 sérialisations d'un objet identique ne me garantissent pas les mêmes octets, je ne fais plus la signature sur les octets de l'objet sérialisés, mais sur le résultat d'une méthode de mes objets.
 
voila.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  probleme de sérialisation

 

Sujets relatifs
[PHP]probleme pour recuperee une donnee passee en methode GET ou POSTprobleme de performance
probleme d affichage d ipInclude ne fonctionne pas, Problème PHP je pense « HELP
Problème tri d'une liste objet (STL)[HTML] probleme de position ...
PROBLEME AFFICHAGE D IPprobleme pour parser un format notation scientifique (ex : e-179) JAVA
[java] probleme de serialisation[JAVA] Probleme d'evenements lié a la serialisation(enfin je pense)...
Plus de sujets relatifs à : probleme de sérialisation


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR