Mon site perso a changé d'adresse.
Vous allez être automatiquement redirigé
vers cette dernière dans quelques secondes ...

http://www.jmdoudoux.fr/

Merci de bien vouloir mettre à jour vos favoris.


Si rien ne se passe cliquez sur le lien ci-dessus.

  28. La sécurité 30. JNI (Java Native Interface) Imprimer Sommaire Consulter avec table des matières Développons en Java   v 0.85 béta  
Copyright (C) 1999-2005 Jean-Michel DOUDOUX  

 

29. Java Web Start (JWS)

 

chapitre 2 9

 

Java Web Start est une technologie pour permettre le déploiement d'application standalone à travers le réseau, développée avec la plate forme Java 2. Il permet l'installation d'une application grâce à un simple clic dans un navigateur. JWS a été inclus dans le J2RE 1.4. Pour les versions antérieures du J2RE, il est nécessaire de télécharger JWS et de l'installer sur le poste client.

JWS est le résultat des travaux de la JSR-56. La page officielle de Sun concernant cette technologie est : http:// java.sun.com/products/javawebstart/

JWS permet la mise à jour automatique de l'application si une nouvelle version est disponible sur le serveur et assure une mise en cache locale des applications pour accélérer leur réutilisation ultérieure.

La sécurité des applications exécutées est assurée par l'utilisation du bac à sable (sandbox) comme pour une applet, dès lors pour certaines opérations il est nécessaire de signer l'application.

JWS utilise et implémente une API et un protocole nommée Java Network Lauching Protocol (JPNL).

Le grand avantage de Java Web Start est qu'il est inutile de modifier une application pour qu'elle puisse être déployée avec cette technologie (à condition que les fichiers contenant des ressources soient accédés en utilisant la méthode getResource() du classloader).

L'application doit être packagée dans un fichier jar qui sera associée sur le serveur à un fichier particulier de lancement.

L'utilisation d'une application via JWS implique la réalisation de plusieurs étapes :

Ce chapitre contient plusieurs sections :

 

29.1. Création du package de l'application

L'application doit être packagée sous la forme d'un fichier .jar.

Il est possible de fournir une petite icône pour représenter l'application : celle si doit avoir une taille de 64 x 64 pixels au format Gif ou JPEG.

 

 

29.2. Signer un fichier jar

L'exemple de cette section crée un certificat et signe l'application avec ce dernier.

Exemple :
C:\>keytool -genkey -keystore mes_cles -alias cle_de_test 
Tapez le mot de passe du Keystore :  test 
Mot de passe de Keystore trop court, il doit compter au moins 6 caractères 
Tapez le mot de passe du Keystore :  erreur keytool : java.lang.NullPointerExcep 
tion 
C:\>keytool -genkey -keystore mes_cles -alias cle_de_test 
Tapez le mot de passe du Keystore :  mptest 
Quels sont vos prénom et nom ? 
  [Unknown] :  jean michel 
Quel est le nom de votre unité organisationnelle ? 
  [Unknown] :  test 
Quelle est le nom de votre organisation ? 
  [Unknown] :  test 
Quel est le nom de votre ville de résidence ? 
  [Unknown] :  Metz 
Quel est le nom de votre état ou province ? 
  [Unknown] :  France 
Quel est le code de pays à deux lettres pour cette unité ? 
  [Unknown] :  fr 
Est-ce CN=jean michel, OU=test, O=test, L=Metz, ST=France, C=fr ? 
  [non] :  oui 
Spécifiez le mot de passe de la clé pour <cle_de_test> 
        (appuyez sur Entrée s'il s'agit du mot de passe du Keystore) : 
C:\> 
C:\>keytool -selfcert -alias cle_de_test -keystore mes_cles 
Tapez le mot de passe du Keystore :  mptest 
C:\>keytool -list -keystore mes_cles 
Tapez le mot de passe du Keystore :  mptest 
Type Keystore : jks 
Fournisseur Keystore : SUN 
Votre Keystore contient 1 entrÚe(s) 
cle_de_test, 12 nov. 2003, keyEntry, 
Empreinte du certificat (MD5) : 9E:5A:61:CC:D8:88:02:59:1D:3B:41:C9:CA:26:1D:BD

 

29.3. Le fichier JNPL

Ce fichier au format XML permet de décrire l'application.

La racine de ce document XML est composé du tag <jnpl>. Son attribut codebase permet de préciser l'url ou sont stockés les fichiers précisés dans le document via l'attribut href.

La tag <information> permet de fournir des précisions qui seront utilisées par le gestionnaire d'application sur le poste client. Ce tag possède plusieurs noeud enfants :

Nom du tag

Rôle

Title

Le nom de l'application

Vendor

Nom de l'auteur de l'application

Homepage

Préciser une page HTML qui contient des informations sur l'application grâce à son attribut href

Description

Une description de l'application. Il est possible de préciser plusieurs type description grâce à l'attribut kind. Les valeurs possibles sont : one-line, short et tooltip. Pour utiliser plusieurs descriptions, il faut utiliser plusieurs tags Description avec l'attribut kind adéquat

Offline-allowed

Ce tag précise que l'application peut être exécutée dans un mode déconnecté. L'avantage de ne pas préciser ce tag et de s'assurer que la dernière version de l'application est toujours utilisée mais elle nécessite obligatoirement une connexion pour toute exécution.

Icon

Permet de préciser une URL vers une image de 64 x 64 pixels au format gif ou JPEG grâce à l'attribut href


Le tag <security> permet de préciser des informations concernant la sécurité.

Nom du tag

Rôle

All-permissions

Indique que l'application à besoin de tous les droits pour s'exécuter. L'application doit alors être obligatoirement signée. Si ce tag n'est pas précisé alors l'application s'exécute dans le bac à sable et possède les mêmes restrictions qu'une applet au niveau de la sécurité


Le tag <resources> permet de préciser des informations sur les ressources utilisées par l'application. L'attribut os permet de préciser des paramètres pour un système d'exploitation particulier.

Nom du tag

Rôle

J2se

Permet de préciser les JRE qui peuvent être utilisés par l'application. Les valeurs utilisables par l'attribut version sont 1.2, 1.3 et 1.4. Il est possible de préciser un numéro de version particulier ou d'utiliser le caractère * pour préciser n'importe quel numéro de release. L'ordre des différentes valeurs fournies est important.

Jar

Permet de préciser un fichier .jar qui est utilisé par l'application

Nativelib

Permet de préciser une bibliothèque utilisé par l'application qui contient du code natif

Property

Permet de préciser une propriété système qui sera utilisable par l'application. L'attribut name permet de préciser le nom de la propriété et l'attribut value permet de préciser sa valeur


Le tag <application-desc> permet de préciser la classe qui contient la méthode main() grâce à son attribut main-class.

Nom du tag

Rôle

Argument

Permet de préciser des arguments à l'application tel qu'il pourrait être fourni sur une ligne de commande


 

Exemple :
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://localhost/" href="MonApplication.jnlp">
  <information>
    <title>Mon Application</title>
    <vendor>Jean Michel</vendor> 
    <homepage href="http://localhost/"/>
    <description>Mon application</description>
    <description kind="short">une application de test</description>
    <offline-allowed/>
  </information>
  <security> 
  </security>
  <resources>
    <j2se version="1.4"/>
    <jar href="MonApplication.jar"/>
  </resources>
  <application-desc main-class="com.moi.dej.jnlp.MonApplication" />
</jnlp>

 

29.4. Configuration du serveur web

Le serveur qui va servir les fichiers doit être configuré pour qu'il associe le type MIME « application/x-java-jnlp-file » avec l'extension .jnpl

Par exemple sous IIS 5, il faut utiliser l'option propriété du menu contextuel du site. Dans l'onglet « En-Tête http », cliquez sur le bouton « Types de fichiers ». Dans le boîte de dialogue « Type de fichiers »,  cliquez sur le bouton « Nouveau type » si l'association n'est pas présente dans la liste. Une boîte de dialogue permet de saisir l'extension et le type MIME

Le type MIME permet au navigateur de connaître l'application qui devra être utilisée lors de la réception des données du serveur web.

 

29.5. Fichier HTML

Hormis le code miminum requis par la norme HTML, la seule chose indispensable est un lien dont l'URL pointe vers le fichier .jnpl sur le serveur web.

Exemple :
<html>
<head>
<title>Mon Application</title>
</head>
<body>
<H1>Mon Application</H1>
<a href="http://localhost/Monapplication.jnlp">Lancez MonApplication</a>
</body>
</html>

 

29.6. Tester l'application

Il faut ouvrir un navigateur et saisir l'url de la page contenant le lien vers le fichier jnlp

Java Web Start se lance

Si le fichier jnlp contient une erreur alors un message d'erreur est affiché.

Cliquez sur « Détails » pour obtenir des informations sur l'erreur.

Si l'application nécessite un accès au système et que le fichier jar n'est pas signé, alors un message erreur est affiché :

Si la classe précisée n'est pas trouvée dans le fichier jar indiqué alors un message d'erreur est affiché

Dans cet exemple,  pour résoudre le problème il faut indiquer le nom pleinement qualifié de la classe.

Au premier démarrage réussi d'une application, JWS demande si l'on souhaite créer un raccourci sur le bureau.

En cliquant sur le bouton «Oui», JWS créé un raccourci sur le bureau.

Exemple de raccourci :
"C:\Program Files\Java\j2re1.4.2_02\javaws\javaws.exe"
"@C:\Documents and Settings\administrateur\Application Data\
Sun\Java\Deployment\javaws\cache\indirect\indirect31560.ind" 

L'application se lance

Comme pour les applets, par mesure de sécurité, un petit libellé en bas des fenêtres est affiché indiquant que la fenêtre est issue de l'exécution d'une application Java.

 

29.7. Utilisation du gestionnaire d'applications

Pour lancer le gestionnaire d'applications, il suffit de double cliquer sur l'icône de « Java Web Start » sur le bureau.

Le gestionnaire d'application permet de gérer les applications en local : il permet de lancer les applications déjà téléchargées sur le poste et les mettre à jour.

Plusieurs petites icônes peuvent apparaître selon le contexte

* : une mise à jour de l'application est téléchargeable sur le serveur

* : l'application peut être exécutée sans connexion au réseau

* : l'application est mise en cache en local

*  : l'application n'est pas signée

 

29.7.1. Lancement d'une application

Pour lancer l'application, il suffit de sélectionner l'application concernée et de cliquer sur le bouton « Démarrer ».

 

29.7.2. Affichage de la console

Dans les préférences, sur l'onglet « Avancé », cocher la case à cocher « Afficher la console Java »

 

29.7.3. Consigne dans un fichier de log

Il permet aussi de configurer JWS. Par exemple, en cas de problème, il est possible de demander de consigner une trace d'exécution dans un fichier journal. Celui est particulièrement utile lors du débogage.

Il est possible d'enregistrer les actions dans un fichier de log. Pour cela, il faut cocher la case « Consigner les sorties » et cliquer sur le bouton « Choisir le nom du  fichier journal » pour sélectionner ou saisir le nom du fichier.

Exemple :
Java Web Start 1.4.2_02 Console, démarrée Thu Nov 13 13:54:36 CET 2003
Environnement d'exécution Java 2 : version 1.4.2_02 par Sun Microsystems Inc.
Consignation dans le fichier : C:\Documents and Settings\admin\Mes documents\journal_jws.txt
Java Web Start 1.4.2_02 Console, démarrée Thu Nov 13 13:54:41 CET 2003
Environnement d'exécution Java 2 : version 1.4.2_02 par Sun Microsystems Inc.
Consignation dans le fichier : C:\Documents and Settings\admin\Mes documents\journal_jws.txt
Java Web Start 1.4.2_02 Console, démarrée Thu Nov 13 13:55:14 CET 2003
Environnement d'exécution Java 2 : version 1.4.2_02 par Sun Microsystems Inc.
Consignation dans le fichier : C:\Documents and Settings\admin\Mes documents\journal_jws.txt
java.lang.NullPointerException
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
            at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
            at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
            at com.sun.javaws.Launcher.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)

 

29.8. L'API de Java Web Start

 

en construction
La suite de ce chapitre sera développée dans une version future de ce document

 


  28. La sécurité 30. JNI (Java Native Interface) Imprimer Sommaire Consulter avec table des matières Développons en Java   v 0.85 béta  
Copyright (C) 1999-2005 Jean-Michel DOUDOUX