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

Format d'échange (XML, JSON...) Java Discussion :

Socket et XML


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Par défaut Socket et XML
    Bonjour,

    j'ai crée une application qui communique avec une application cliente via socket et qui recoit du xml et qui en renvoi.

    Mon appli est elle meme cliente d'une autre appli qui lui fournit l'information idoine.

    Dans l'ensemble tout marche sans problème, sauf qu'une méthode me renvoi mon xml dans l'outputstream de la socket en décalé.
    En détail j'utilise ma méthode, qui créé un doc xml, qui une fois créé l'insère dans le flux de ma socket pour le remonter au client.
    Sur la deuxième utilisation le flux me remonte le premier doc Xml.

    En essayant d'analyser de plus près , et en inscrivant juste une String , celle ci était remontée immédiatement.
    En lui imposant un Thread.sleep(1000) , cette chaine était remontée dans un deuxième utilisation.

    J'ai beau avoir fait des flush pour declencher une action dans le flux, ça ne marche pas.
    Je ne vois pas comment faire et cela devient urgent !!
    Merci de m'aider

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Pas bien expliqué. On est pas dans ta tête.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Par défaut
    reexplication

    J'ai 3 modules, 1 module A qui est serveur socket d'un module B et client socket d'un module C.

    Le module B envoi une requête via un flux xml, au module A. Celui ci créé les objets et demande des infos complémentaires au module C dans un deuxième temps. Une fois tous les traitements métier exécutés, le module A renvoi dans le outputstream de la connexion ouverte précédemment entre A et B, la réponse sous format d'un document xml à B.

    le problème est que ma réponse ne remonte pas dans l'outpustream à la première exécution, mais lorsqu'on exécute l'action une deuxième fois. Et lors du troisième passage, j'obtiens la réponse de ma deuxième demande.

    En testant je me suis rendu compte que le temps de traitement de mon action entre le module B et C pourrait être en cause, mais je ne vois pas pourquoi précisément.

    Je peux fournir le code pour plus de détails bien sur

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Gaspard22 Voir le message
    Je peux fournir le code pour plus de détails bien sur
    Ben, oui -_-°. Il n'y a pas de raison bien connue et habituelle pour que cela arrive.

    À mon avis, ça doit être en rapport avec la manière dont tu sépares plusieurs requêtes dans ton module A.
    Si je voulais faire un exemple en quelques lignes, l'un des points clé serait que les modules A et B, quand ils s'envoient des documents XML, doivent indiquer leurs tailles en octets. Puis de lire exactement ce nombre d'octets pour construire le XML.
    Mais tout dépend comment tu t'y prends.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Par défaut
    je fournis le code lundi, mais en substance

    le client envoie un flux xml ayant une requête, avec un content
    je traite cette "requête".
    Je créé un document xml en réponse et je le passe à une méthode de renvoi

    cette méthode a comme paramètre la Socket initialisée à la connexion du client

    j'utilise 2 méthodes

    methode XMLOutputter.output(Document, Socket.OuputStream);

    et un Writer attaché au même OutputStream.

    Lorsque j'utilise le writer seul sans passer de doc, j'ai une réponse immédiate, lorsque j'utilise le writer et lui impose une pause d'1 seconde, la réponse n'arrive qu'après une deuxième appel.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Gaspard22 Voir le message
    Lorsque j'utilise le writer seul sans passer de doc, j'ai une réponse immédiate, lorsque j'utilise le writer et lui impose une pause d'1 seconde, la réponse n'arrive qu'après une deuxième appel.
    Attention tu repars dans le vague, là. Cette histoire d'imposer une seconde n'est pas claire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [DOM] Fermeture de Socket apres parsage XML
    Par Ange-Louis dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/04/2008, 17h10
  2. xml messaging and sockets ssl
    Par kass28 dans le forum XML
    Réponses: 0
    Dernier message: 20/10/2007, 15h20
  3. [XML Socket] Débutant
    Par too_Slow_ dans le forum Flash
    Réponses: 7
    Dernier message: 11/04/2007, 13h50
  4. Réponses: 2
    Dernier message: 01/01/2007, 13h04

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