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

GWT et Vaadin Java Discussion :

[GWT2.3] Déploiement application GWT sous MAC


Sujet :

GWT et Vaadin Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Points : 104
    Points
    104
    Par défaut [GWT2.3] Déploiement application GWT sous MAC
    Bonjour,

    Je suis en train de développer une application en GWT 2.3 (eclipse indigo + plugin GWT Google - Test sur ma machine Win7 avec Jetty et déploiement sur Tomcat sur un Mac Pro avec Lion comme OS)

    Mon application fonctionne bien dans son ensemble mais...
    J'ai une fonctionnalité dans mon application : lire un fichier XML(localisé dans la partie serveur ; dans le war sous tomcat)
    arborescence sous Tomcat:
    tomcat
    webapps
    MonApplication
    File_XML
    testFile0.xml
    testFile1.xml
    WEB-INF
    MonApplication.html
    MonApplication.css

    je veux aller lire les fichiers XML qui se trouvent dans File_XML.
    En gros, j'ai un service RPC qui envoie le chemin et le nom du fichier à partir du client GWT.
    Dans mon service, je lis le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...etc..
    //fullPathFilename=./FILE_XML/testFile0.xml
    File file=new File(fullPathFilename);
    if(!file.exists())
    {
    LOGGER.info("The file ["+fullPathFilename+"] doesn't exist.");
    return null;
    }
    ..etc..
    Mon problème : tout marche bien en local, cette fonctionnalité lit bien les fichiers XML et quand je déploie cette fonctionnalité ne marche pas...
    je vais voir dans le fichier de log catalina.out de mon tomcat et j'ai le log de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOGGER.info("The file ["+fullPathFilename+"] doesn't exist.");
    c-à-d par exemple : The file [./FILE_XML/testFile0.xml] doesn't exist.
    J'ai bien vérifié que ce fichier existe bien dans le répertoire FILE_XML sur le serveur.......j'ai même testé avec l'url de base de mon application en y rajoutant simplement http://xxx.xxx.x.xxx:8081/MonApplica.../testFile0.xml, le fichier XML s'affiche bien dans le navigateur.

    Toute aide, conseil sont les bienvenus.....
    merci d'avance..

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    bonjour,

    je n'ai pas vraiment d'idée mais bon ça ne coute rien d'essayer :

    ton path n'est pas peut être pas correct. Peut être que la casse compte (File_XML et FILE_XML) ou que le ./ n'est pas adapté.

    Ou alors la méthode exists() ne fonctionne pas correctement ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Points : 104
    Points
    104
    Par défaut
    merci de t'intéresser au problème....

    Path pas correct : j'ai regardé et testé et non, mon path est bon car comme je l'ai dit, j'ai essayer d'accéder directement aux fichiers XML par l'URL et le navigateur affiche sans problème le contenu du fichier XML.
    Voici l'url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://xxx.xxx.x.xxx:8081/MonApplication/File_XML/testFile0.xml
    et voici l'url de mon application GWT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://xxx.xxx.x.xxx:8081/MonApplication/
    je vais creuser sur l'histoire du point : ./ peut-être ../ sous Mac..

    tu dis :
    Ou alors la méthode exists() ne fonctionne pas correctement ...
    là, j'y crois moyen, la méthode n'aurait pas le même comportement de la JVM Windows et la JVM Mac, bizarre, non ????

    je galère encore sur un petit problème à la c.....
    cela me bouffe du temps....

    tous aides, conseils sont les bienvenus...
    merci d'avance

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par valkeke Voir le message
    webapps
    MonApplication
    File_XML

    The file [./FILE_XML/testFile0.xml] doesn't exist.
    Mais tu peux confirmer que tu utilises bien la même casse pour le nom de ton répertoire ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2011
    Messages : 26
    Points : 33
    Points
    33
    Par défaut
    Essaye déjà d'utiliser File.separator a la place des / ou \ . Ainsi c'est la JVM qui va déduire quel est le bon séparateur en fonction du système. Mais pour Mac (c'est basé sur du Unix) c'est bien / qui doit fonctionner.

    Normalement lorsqu'on lance System.out.println(File("FILE_XML/testFile0.xml").getCanonicalPath()); le fichier doit bien se trouver en fonction du classpath genre [PROJECT_CLASSPATH]/FILE_XML/testFile0.xml.
    Donc je me pose des questions sur le ./. Essaye déjà d'enlever le ./ puisque c'est en fonction du classpath (donc c'est un peu inutile) et comme je ne suis pas sur du fonctionnement sur Mac autant enlever les incertitudes. Si je ne me trompes pas, je pense que tu peux donner un path relative en Mac par un simple / a la place de ./.

    Tout ceci est du pur supposition car je n'ai pas de Mac a disposition.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Passez par un URL "classpath:/path_to_file_from_classpath", (initialisé par le constructeur adhoc ou via @Value) et utilisez le constructeur File() qui prend un URI. (donc url.toURI()).

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Points : 104
    Points
    104
    Par défaut
    Pour information, rmartinsfidalgo dit tres justement :
    Essaye déjà d'utiliser File.separator a la place des / ou \
    Bien sur je transforme mon chemin (./FILE_XML/testFile0.xml) en remplcant par File.separator comme tu l'indiques car je teste sous Win7, développe sous Win7 et je déploie mon application en production sous Mac.
    Je pensais qu'en faisant cela je me coupais de problème comme j'ai en ce moment.....
    je n'arrive pas à voir la différence entre le mode local et mode déployer dans mon code au vue de mon problème actuel.... je sèche un peu....
    Java doit fonctionner de la même manière sur n'importe quel OS. Je commence à avoir des doutes, particulièrement sur la classe File du JDK.
    Un truc m'échappe....

    Pour information, in dit :
    Mais tu peux confirmer que tu utilises bien la même casse pour le nom de ton répertoire ?
    je confirme bien(une autre personne l'a contrôlé également, on ne sait jamais que je n'ai pas les yeux en face des trous ! ) que le chemin est bon car en plus d'un contrôle visuel, j'ai lancé l'url sur mon navigateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://xxx.xxx.x.xxx:8081/MonApplication/File_XML/testFile0.xml
    le navigateur affiche bien le contenu du fichier XML que je souhaite.

    merci de l'intérêt que vous portez à mon problème...
    Je vais tester toutes les infos que vous m'avez donné et je reposterais mes résultats ...

    Toutes aides, conseils sont TOUJOURS les bienvenus...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Points : 104
    Points
    104
    Par défaut
    j'ai testé avec un point, 2 point sans point sur le serveur de prod Mac Pro : même résultat; il n'arrive pas à trouver le fichier en question....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ./File_XML/testFile0.xml
    ../File_XML/testFile0.xml
    /File_XML/testFile0.xml
    Sur mon poste de dev, cela marche tres bien avec 1 point ou 2 points mais pas sans point dans le chemin relatif que je lui donne.

    JeitEmgie me dit
    Passez par un URL "classpath:/path_to_file_from_classpath", (initialisé par le constructeur adhoc ou via @Value) et utilisez le constructeur File() qui prend un URI. (donc url.toURI()).
    cela m'a l'air d'être une piste intéressante mais je ne suis trop caler en URI et URL, tu pourrais expliciter un peu plus ton idée au vue de mon problème???
    merci d'avance...

    Toutes aides, conseils sont le bienvenus...

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    File file;
    try {
            URL url = new URL("classpath:/…") ;
    	file = new File(url.toURI());
    } catch (URISyntaxException e) {} catch (MalformedURLException e) {}
    // use file…

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Points : 104
    Points
    104
    Par défaut
    merci, ça c'est bon ....
    en fait c'est au niveau de ce que tu mets dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URL url = new URL("classpath:/…") ;
    dans mon cas j'ai du mal avec classpath:/…????

    sur ma machine en mettant ./File_XML/testFile0.xml tout marche nickel sans passer par une classe URL, simplement en mettant en paramètre d'entrée du constructeur File ./File_XML/testFile0.xml
    ( j'aurais pas posé de post! c'était le bon tps tout marchait nickel...)

    Sur le serveur de prod ou est situé mon problème, j'accède à la ressource comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://xxx.xxx.x.xxx:8081/MonApplication/File_XML/testFile0.xml
    et à l'appli GWT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://xxx.xxx.x.xxx:8081/MonApplication
    mais bon je dois y accèder avec le code java pour pouvoir lire le contenu du fichier...
    et oui la fatigue, peut-être..???? mais je ne vois pas trop quoi mettre en paramètre du constructeur de la classe URL???
    ma ressource(fichier xml) n'est pas localisé dans le package ou se trouve mon code java !

    en plus j'ai l'impression, je présents que je vais faire devoir implémenter un comportement différent si je suis en dev ou si je suis en prod pour ce petit truc!

    help !!

Discussions similaires

  1. Deploiement d'application GWT sous Tomcat/Eclipse
    Par salawi45 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 24/05/2009, 21h33
  2. Deployement application GWT sous JBOSS
    Par sino100100 dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 28/04/2009, 10h33
  3. [DEV] Execution d'application externe sous mac os X
    Par beber69 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 24/04/2009, 11h12
  4. Crash d'application Java sous Mac
    Par Deamon77 dans le forum EDT/SwingWorker
    Réponses: 2
    Dernier message: 09/04/2009, 12h39
  5. Déploiement application Qt sur Mac OS X
    Par mercure07 dans le forum Qt
    Réponses: 5
    Dernier message: 27/01/2009, 14h34

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