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 :

xml sur un serveur


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut xml sur un serveur
    Bonsoir à tous,
    J'ai un petit soucis que je trouve étrange.
    Lorsque je code en local, je n'ai pas de soucis pour lire mon fichier xml mais dès que je passe sur mon serveur j'ai une nullPointerException à chaque fois et je ne vois pas pourquoi

    Le code est le suivant :

    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
    27
     
    public static List<Truc> getTrucs(String nomFichier) {
            Document document = null;
            List<Truc> trucs = new ArrayList<Truc>();
            SAXBuilder sxb = new SAXBuilder();
            try {
                document = sxb.build(nomFichier);
            } catch (Exception e) {
                e.printStackTrace();
            }
     
            Element racine = document.getRootElement();
            List listTruc = racine.getChildren("truc");
     
            //On crée un Iterator sur notre liste
            Iterator i = listTruc.iterator();
            while (i.hasNext()) {
                Truc trucElement = new Truc();
                Element plat = (Element) i.next();
                trucElement.setTitre(plat.getChildText("titre"));
                trucElement.setJsp("trucs/"+plat.getChildText("jsp").trim());
     
                trucs.add(trucElement);
            }
     
            return trucs;
        }
    L'exception se produit sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element racine = document.getRootElement();
    Et comme paramètre de ma méthode je passe http://sarl-dupire-flament.fr/menus/trucs.xml qui est pourtant bien visible

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Chef de projet, développeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet, développeur .net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par défaut
    Bonjour

    j'ai un doute sur le fait que passer l'url sous forme d'un string à sax.build fonctionne, essaye peut être comme ça :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    sxb.build(new URL(nomFichier));

  3. #3
    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
    Alors,

    - pour le NullPointerException: On encadre TOUT le code par un try/catch, pas juste une instruction !
    À partir de maintenant, toujours et jusqu'à ce que la mort t'en empêche.

    Ce qui se passe, c'est qu'il y a une exception sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document = sxb.build(nomFichier);
    Et que tu l'as catchée sans rien en faire. Résultat, le code continue alors que document est toujours null. D'où NullPointerException en essayant de l'appeler.
    On ne continue pas après avoir catché une Exception. On fait quelque chose avec cette Exception.

    - Malgré tout, tu as pensé à logger la stacktrace de l'exception. C'est bien. Grâce à ça tu sais quelle est l'Exception qui est arrivée. Mais tu ne nous l'as pas montrée. C'est étrange.
    => Pareil, désormais tu montres toujours tes stacktraces. Situations où tu peux t'en passer : aucune. S'il n'y a pas de stacktrace tu fais d'abord en sorte qu'il y en ait une. Si tu n'y arrives pas tu le dis.

    - Cause de l'erreur : On en sait rien, c'est la stacktrace qui le dit.

    Citation Envoyé par ElSpopo
    j'ai un doute sur le fait que passer l'url sous forme d'un string à sax.build fonctionne
    Si si, c'est censé marcher, la doc est claire là-dessus. La String est censée être le systemId du document à construire, autrement dit son URI, autrement dit vraisemblablement une URL relative ou absolue vers lui.
    Bref, testé c'est prouvé. Chez moi ça fonctionne parfaitement.

    Mais il peut y avoir autre chose, genre le firewall configuré pour bloquer Java quand il essaie de se connecter via HTTP, ou des choses de ce genre. Ou alors, la String passée en paramètre n'est pas celle qu'on nous dit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    Merci pour vos réponses
    L'exception que j'ai est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    java.lang.NullPointerException
    	menus.XmlParseur.getTrucs(XmlParseur.java:98)
    	org.apache.jsp.trucs_jsp._jspService(trucs_jsp.java:110)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    La ligne 98 de XmlParseur correspondant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element racine = document.getRootElement();
    Sinon thelvin pour toi ce serait un problème de communication entre mon application sous Tomcat et mes fichiers xml?
    Tout est dans le même war.
    Après si ça vient du firewall de mon serveur je n'en sais rien...

  5. #5
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    Voici la stack complète :
    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
    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
    57
     
    java.io.FileNotFoundException: http://r30928.ovh.net/boucherie/menus/trucs.xml
    	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
    nection.java:1311)
    	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrent
    Entity(XMLEntityManager.java:677)
    	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineD
    ocVersion(XMLVersionDetector.java:186)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
    ML11Configuration.java:772)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
    ML11Configuration.java:737)
    	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.
    java:119)
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab
    stractSAXParser.java:1205)
    	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p
    arse(SAXParserImpl.java:522)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
    	at menus.XmlParseur.getTrucs(XmlParseur.java:101)
    	at org.apache.jsp.trucs_jsp._jspService(trucs_jsp.java:110)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
    .java:331)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
    29)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    alve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    alve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    ava:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    ava:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    ve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
    a:151)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
    :874)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
    rocessConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
    int.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
    lowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
    ool.java:689)
    	at java.lang.Thread.run(Thread.java:619)
    Le fichier existe pourtant bien!

  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 michel.di Voir le message
    Sinon thelvin pour toi ce serait un problème de communication entre mon application sous Tomcat et mes fichiers xml?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.io.FileNotFoundException: http://r30928.ovh.net/boucherie/menus/trucs.xml
    	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
    nection.java:1311)
    Ça me semble assez éloquant.

    Citation Envoyé par michel.di Voir le message
    Tout est dans le même war.
    On s'en fout, non ? Là tu essaies de récupérer un fichier par HTTP.

    Citation Envoyé par michel.di Voir le message
    Après si ça vient du firewall de mon serveur je n'en sais rien...
    Quelque chose de ce genre. Ou peut-être que ça tourne dans un sandbox quelconque qui interdit de faire des requêtes HTTP n'importe où, et notamment vers http://r30928.ovh.net/boucherie/menus/trucs.xml

    Le fichier existe pourtant bien!
    Je n'en doute pas. Chez moi ce même programme, qui va chercher le fichier à n'importe laquelle des deux URLs que tu as données, tourne parfaitement bien.

    Quelque chose fait que ton programme Java n'arrive pas à récupérer le fichier situé à cette URL. Mais quoi, alors ça!

    Un truc que tu peux essayer, c'est de récupérer le fichier avec une bibliothèque dédiée, genre HttpClient, et le charger en mémoire. Si ça marche mieux (ce dont je doute,) tu pourras toujours passer le résultat chargé à SAXBuilder.build sous forme de ByteArrayInputStream.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    je pense en fait que c'est ovh qui doit m'empécher de faire ça. non?!

Discussions similaires

  1. Récupération de balise XML sur un serveur web.
    Par corgato dans le forum Débuter
    Réponses: 8
    Dernier message: 23/12/2008, 08h34
  2. parser un fichier xml sur un serveur
    Par diakite4 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/05/2008, 15h26
  3. [DOM XML] Enregistrer un fichier XML sur un serveur ftp
    Par scorpion1611 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/09/2007, 15h33
  4. [AJAX] probleme appelle page XML sur autre serveur
    Par ldcarpathes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2006, 18h35
  5. Utiliser un fichier XML sur un serveur FTP
    Par ired dans le forum Bases de données
    Réponses: 1
    Dernier message: 06/04/2005, 13h43

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