Tutoriel Java Web Start – 5 minutes pour passer d’une appli desktop à une appli web
Eric Vialle | Dimanche 18 mai 2008 | 12:17
Java Web Start est une technologie de déploiement d’application Desktop via le Web. Si vous disposez d’au moins Java 1.4, vous pouvez lancez une application Java via n’importe quel lien. Cliquez ici pour avoir un exemple de ce que nous allons faire.
Cette mise en place va se faire en trois temps:
- Création d’un fichier JAR
- Création d’un fichier JNLP
- Mise en place sur le serveur
Création d’un Fichier JAR
Gestion des Ressources
Vous devez mettre toutes les ressources utilisé par votre application dans le JAR déployé. Pour accèder aux ressources, n’utilisez pas (par exemple)
mais utilisez plutot
Si une de ces ressources est un JAR, pas la peine de l’inclure dans le JAR que nous allons généré. Nous verrons plus tard comment faire dans ce cas là.
Génération du JAR
Vous pouvez utilisez votre EDI préféré pour créer un JAR. Avec Eclipse, utilisez la fonction Exporter du menu Fichier.
Signature du JAR
Nous allons générer la clef, puis l’attacher au JAR que nous venons de créer.
Pour générer la clef, on utilise l’outil keytool
keytool -genkey -keystore NomDuMagasinRegroupantLesClefs-alias NomDeLaClef
Si vous préférez les interfaces graphiques, vous pouvez gérer vos clefs via KeyTool IUI.
Pour l’attacher au JAR, on utilise un autre outil
jarsigner -keystroke NomDuMagasinRegroupantLesClefs MonApplication.jar NomDeLaClef
Si vous ne signez pas votre JAR, celui-ci peut tout de même s’exécuter. Toutefois, certaines fonctions seront restreintes, telle que l’accés aux données utilisateurs (disque dur) ou certains périphériques sensibles.
Création d’un fichier JNLP
Le fichier JNLP est un fichier XML décrivant votre application Java Webstart.
- < ?xml version="1.0" encoding="utf-8"?>
- Eric V
- Mon application
- une application de test
Vous noterez dans la partie ressources, que l’on met l’URL de tous les JAR dont on a besoin pour utiliser notre application.
Pour avoir une liste compléte des tags pour un fichier JNLP, rendez vous sur le site de SUN.
Mise en place sur le serveur
Configuration d’Apache
Dans le fichier de configuration d’Apache, ajoutez dans le fichier conf\mime.types, cette ligne:
application/x-java-jnlp_file jnlp
Mise en place des fichiers
Tous les JAR et le fichier JNLP doivent être mis sur un repertoire web accessible en lecture de l’extérieur.
Problèmes Potentiels
Si l’informatique marchait du premier coup, ma grand-mère installerait toute seule son réseau wifi. Des problèmes diverses peuvent subvenir:
- Si vous avez un logo “Java Starting” pendant plusieurs secondes et que rien ne se passe après: supprimez le fichier “deployment.properties“. Ce fichier sera regénéré automatiquement. Ce problème semble être propre à Mac OS X.
- Pour avoir “All Permissions”, vous devez signer TOUS vos JAR. Si un fichier JAR que vous souhaitez utiliser ne peut être signé, cela peut venir du fichier MANIFEST.MF, puis recréez le JAR. Si vous êtes paresseux ou peu rigoureux, essayez de le supprimer…
- Si il s’agit d’une application SWT (Standard Widget Tool), il faut spécifier cette librairie et la dll sous Windows. Rendez une visite au tutorial de LFE.
Sources:
- FAQ Java Web Start (non officiel)
- http://www.ibm.com/developerworks/java/library/j-webstart/
- http://www.jmdoudoux.fr/java/dej/chap028.htm
- http://mbaron.ftp-developpez.com/javase/jws.pdf
- http://www.pcinpact.com/forum/lofiversion/index.php/t111578.html






Bonjour,
Merci merci pour ces explications.
Cependant j’ai un souci lorsque je signe certains jars il enlève / supprime les données initiales du jar. Le fait de signer ce jar enlève les données suivantes :
Manifest-Version: 1.0
Bundle-Name: org.eclipse.core.commands French NLS Support
Bundle-SymbolicName: org.eclipse.core.commands.nl_fr ;singleton=true
Bundle-Version: 3.4.0.v20081123043401
Bundle-Vendor: Eclipse.org
Fragment-Host: org.eclipse.core.commands
Et par contre ajoute bien les données concernant la signature :
Name: plugin_fr.properties
SHA1-Digest: Vigk0ly8waWzdFFZzSZEA1UvS9Y=
Name: about.html
SHA1-Digest: VpXXGnjM0HeeD/l2/5T0GziCHVE=
Name: META-INF/eclipse.inf
SHA1-Digest: 6mDW8kS/T9pK7w1by/wcxy21Z20=
Auriez-vous une explication par hasard ?
Merci d’avance.
Hoang