IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Mettre à jour un objet serializable


Sujet :

avec Java

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut Mettre à jour un objet serializable
    Bonjour à tous,

    J'ai une classe nommé Preferences.class auquel j'associe un fichier serializable d'enregistrement.

    Le problème est que si je met a jour cette classe automatiquement, le fichier n'est plus déserializable.

    Voici la méthode que j'utilise pour mettre a jour.
    -1 Demande de mise a jour
    -2 On récupère le schéma de la future classe Preferences sur le serveur
    -3 On crée un objet du schéma de la future classe
    -4 On on modifie la valeurs des champs en associant les champs
    -5 On serialize la nouvelle classe


    J'ai terminé les actions (1-4-5) il me manque plus que l'action 2 et 3.

    Pour l'action 2. Je récupère le schéma de la classe distante avec URLClassLoader.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    URL url = new URL("http://serveur/v1.0.1/prog.jar");
        //URLClassLoader loader = new URLClassLoader (new URL[] {url});
        URLClassLoader cl = new URLClassLoader(new URL[] {url});
        Class<?> cls = cl.loadClass("com.test.model.Preferences");
        System.out.println("Class name = " + cls.getCanonicalName());
        Method[] field_url = cls.getMethods();
     
    	for(Method champ_url : field_url){//On parcours les champs classe distante
    		System.out.println("Methode:"+champ_url.getName());
    	}
    Ce code fonctionne dans un classpath ou la classe preferences n'existe pas.
    Si cette classe existe dans le classpath, ça me retourne le schéma de la classe du classpath.

    Le faite que la classe existe déjà dans le classpath me pose un problème.

    Ma question est comment obtenir une classe A et une autre classe A²?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Elles doivent être dans deux classloader séparé ET aucun de ces classloader ne doit voir l'autre. Donc dans ton cas il faudra que
    Préférence ne fasse pas partie de l'application
    Preference "vielle version" est chargée avec un nouveau classloader x
    Preference "nouvelle version" est chargée avec un nouveau classloader y


    Mais franchement, sérializer une classe pour sauver la config de l'utilisateur, c'est pas l'idée du siècle. Il aurait été bien préférable de mettre une méthode "save()" et "load()" dans la classe et de laisser la classe sauver / charger comme elle veux -> ca aurait permis de mettre le code que tu veux dedans pour gérer les anciennes versions.

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Tchize Merci pour ta réponse,

    Ta réponse m'intéresse, je me rend compte que je suis en train d'écrire des tartines sur la réflexivité, si je peux éviter ça, je suis preneur.

    Aurais-tu un tuto ou exemple a me proposer.

    Je ne vois pas vraiment comment tu fais pour récupérer la config si tu quittes l'application?

    Peux tu m'aiguiller?
    En te remerciant

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Bah à la place de demander la sérialisation de ta classe préférence, tu demande à ton instance d'écrire, par exemple, dans un OutputStream, et elle écrite comme elle veux. Qu'elle utiliser derrière des properties, un format binaire rien qu'à toi, du XML, peu importe. Enfin, les fichier type texte restent les plus facile à rebidouiller par l'utilisateur en cas de soucis

    Tu peux avoir des trucs comme Commons Configuration de apache, xstream, ou jaxb qui pourraient te servir.

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Tu penses qu'il est préférable de créer un fichier xml
    properties : c'est du XML?

    Peut on mettre un objet dans un fichier xml et le reconvertir?
    Exemple mettre un JCombobox (A Titre d'exemple).

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Ok j'ai mis en place un fichier XML.

    Problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre à jour un Objet[][]
    Par Amnael dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 07/03/2015, 17h40
  2. [2.x] mettre à jour un objet
    Par wail_kun dans le forum Symfony
    Réponses: 2
    Dernier message: 03/09/2012, 20h14
  3. Réponses: 4
    Dernier message: 15/02/2010, 21h41
  4. mettre à jour un objet place dans le contexte de l'appli
    Par lilli1407 dans le forum Struts 1
    Réponses: 6
    Dernier message: 09/11/2006, 16h58
  5. [Débutant][Conception] Mettre à jour un objet de type classe
    Par Sylvester dans le forum Général Java
    Réponses: 19
    Dernier message: 09/02/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo