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

JWS Java Discussion :

Problème de cache sur la méthode FileSystemManager.resolveFile()


Sujet :

JWS Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut Problème de cache sur la méthode FileSystemManager.resolveFile()
    Bonjour à tous !

    J'ai un problème avec le cache de Java Web Start, sur JDK 6.0.

    J'ai une appli dont la partie cliente est lancée via JWS, et qui, au démarrage, parcourt un certains nombre de répertoires se trouvant dans certains JARs de l'appli pour lire des fichiers de configuration.

    Jusqu'ici, c'est-à-dire avant la migration vers Java 6.0, nous procédions ainsi pour récupérer les fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Enumeration<URL> resources = classLoader.getResources( "repertoire" );
     
    while ( resources.hasMoreElements() )
    {
    	URL element = resources.nextElement();
    	String resourcePath = element.toString();
     
    	FileSystemManager fsManager = VFS.getManager();
    	FileObject jarFile = fsManager.resolveFile( resourcePath );
     
    	// Puis on récupère les fichiers contenus dans le répertoire
    	// ...
    }
    Ce qui me paraît être une manière assez classique de faire. L'appli ayant chargé en cache les dernières versions des JARs, elle allait chercher les JARs locaux.

    Le problème commence par le fait que, dans Java 6, les méthodes getResource() et getResources() de ClassLoader, dans le cadre d'une appli JWS, ne retournent pas, comme avant, un chemin local du type file://C:/Temp/.../fichier.jar!/repertoire mais un chemin Web du genre http://serveur:8564/MonAppli/app/......ar!/repertoire. Ca, à la limite, ca peut paraître salutaire pour d'éventuelles questions de sécurité, on évite les chemins locaux et on délègue à la JVM le soin de mapper une URI à une ressource locale mise en cache.

    Le gros problème, c'est que ça ne marche pas ! L'appli cherche systématiquement, lors du resolveFile(), à télécharger la ressource distante, ce qui engendre des temps de lancement affreux.

    Quelqu'un a-t-il déjà rencontré un problème similaire ? Mes recherches sur le net n'ont pas donné beaucoup de résultats.

    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    UP ! (on ne sait jamais ...)

  3. #3
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    le fait de passer par une URI a la place d'une url ne te reglerai pas le probleme ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Merci pour ta réponse / question.

    Je n'ai jamais retenu la différence entre URI et URL. J'ai essayé de transformer mon URL en URI via toURI(), mais ça ne change rien, l'accès reste distant.

    Tu avais une idée derrière la tête ?

  5. #5
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Et bien a vrai dire oui, mais non en fait ^^
    Je viens de réviser la différence antre url et uri et ca ne résoudra pas ton problème Donc non dsl pas d'idée pour l instant :/

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Merci quand même

    Sinon, es-tu habitué à Java Web Start ? Si oui, comment procèdes-tu habituellement pour accéder à des ressources, comme des fichiers de config, qui se trouvent dans les JARs de ton appli ?

  7. #7
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Non je ne connais pas java web start ^^ mais en tout cas avec Spring, c'est ce que je fais. Pour récupérer un fichier de ressource dans un jar, dans le appContext :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <import resource="classpath:class/path/file.xml"/>

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Quelqu'un d'autre a-t-il une idée ?

    Ma question, finalement, est simplement :
    Comment accéder comme il faut (avec accès au cache) à une ressource contenue dans l'un des JAR d'une appli déployée par Java Web Start, sur JDK 6.0
    Ce qui me tue, c'est que la manip est très courante mais que ça fait 2 jours que je trime dessus malgré tout.

    Toute suggestion me comblera

Discussions similaires

  1. Désactiver le cache sur une méthode d'un service WCF appelée depuis une page ASPX
    Par zar dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 18/03/2009, 09h41
  2. [JavaScript] [FAQ] Mon xhr ne se met pas à jour (problème du cache) sur IE
    Par FremyCompany dans le forum Contribuez
    Réponses: 3
    Dernier message: 07/01/2009, 10h56
  3. Problème de cache sur IIS
    Par TekP@f dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/09/2007, 15h06
  4. Problème de cache sur IIS
    Par TekP@f dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 21/09/2007, 12h06
  5. Problème d'exposant sur une méthode mathématique.
    Par ecobarito dans le forum Débuter
    Réponses: 14
    Dernier message: 29/08/2007, 20h16

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