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

Entrée/Sortie Java Discussion :

XMLEncoder et InpuStream


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Points : 6
    Points
    6
    Par défaut XMLEncoder et InpuStream
    Bonjour,

    je vous explique, j'ai en gros un système de "client-serveur".
    Coté serveur je vais chercher des objects dans une BDD, je les créer en mémoire, et je voudrais les envoyés a mon client. J'utilise le sérialiseur : XMLEncoder et donc XMLDecoder. J'ai donc suivi l'exemple trouvé sur développez(http://ydisanto.developpez.com/tutor...ation/partie2/) , le problème c'est que pour que l'objet sois bien reconstruit, on est obliger de faire : encoder.close(); et donc coté client : decoder.close(); Le problème viens donc du faite que quand ca close les inputstream et outputstream sont fermé a leur tour et donc ma connection à mon socket...ce qui n'est pas vraiment pratique... donc si quelqu'un a une idée de comment ne pas perdre cette connection...
    merci d'avance...

    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
     
    // coté Client
    	private Object XML2Object(InputStream input) {
    		XMLDecoder decoder = null;
    		decoder = new XMLDecoder(input);
    		Object o = decoder.readObject();
    		decoder.close();
    		return o;
    	}
    // mon input c'est : socket.getInputStream()
     
     
    // coté serveur
    private void object2XML(Object o) {
     
    	XMLEncoder encoder = null;
    	try {
    		encoder = new XMLEncoder(new BufferedOutputStream(client
    					.getOutputStream()));
    	} catch (IOException e) {
    			e.printStackTrace();
    	}
    		encoder.writeObject(o);
    		encoder.flush();
    		encoder.close();
    }

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le problème dans ce cas là c'est que tu ne saurais plus détecter la fin de chaque réponse et le début de la suivante !

    Il faudrait donc savoir comment tu vas différencier chaque question/réponse...

    a++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    C'est bien là mon problème...

    comment lui faire comprendre que à la fin du XML ( qui fini donc par : </java>) il peut recréer mon objet...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    L'Encoder lit jusqu'à la fin du flux, car il doit vérifier la totalité du flux afin de s'assurer de la validité des données.

    Donc ce serait à toi de découper chaque question/réponse, mais cela dépend fortement de ton protocole de communication réseau...

    a++

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    il y aurai donc un moyen de créer un stream "temporaire" ? ainsi si il est fermé ca ne couperai pas ma connection, mais juste le flux pour le xml ?

Discussions similaires

  1. XMLEncoder et stackoverflow
    Par obelix dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 29/11/2006, 22h24
  2. débutant XMLEncoder soucis sérialisation classes
    Par superpigeon dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 26/10/2006, 14h24
  3. [Java Beans XMLEncoder] Impossible d'encoder un objet...
    Par petitpepito dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 27/02/2006, 16h19
  4. XMLEncoder ne sauvegarde pas la donnée d'un PlainDocument.
    Par mitje dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 27/01/2006, 04h06
  5. [JDBC]comment transformer une inpustream en un BLOB
    Par lalakers dans le forum JDBC
    Réponses: 8
    Dernier message: 18/08/2005, 19h56

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