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 :
- 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/. [...] 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 !
---------------
Le topic des commentaires priceless sur les sites Web !