kramann.info
© Guido Kramann

Login: Passwort:










4.2 Zweites Konzept: E-Tests werden mit Hilfe von Java-Webstart heruntergeladen und gestartet

Beschreibung eines weiteren denkbaren Konzeptes für den Ablauf elektronischer Tests

  • Die Tests liegen in auf einem Server, werden aber über Java-Webstart heruntergeladen und lokal gestartet.
  • Java-Webstart prüft automatisch auf Aktualisierungen der Software.
  • Die heruntergeladenen Dateien werden lokal im Cache (Zwischenspeicher) des Rechners abgelegt.
  • Das Herunterladen und Starten der Anwendung kann auch ohne Webbrowser über einen Eintrag im Startmenü erfolgen.
  • Java-Webstart-Anwendungen unterstützen das von Applets her bekannte "Sandbox-Prinzip", bei dem nur ein eingeschränkter Zugriff auf lokale und Netzrecourcen möglich ist.
  • Wird ein solcher Zugriff benötigt, erscheint eine Sicherheitsmeldung und der Client-Nutzer kann die Ausführung zulassen oder ablehnen.
  • Als .jar-Datei wird die jabes.jar-Datei aus Kapitel ../03_Basics/05_b005/b005 verwendet.

Der Ordner unter ../htdocs/javawebstarttest kann zum Testen hier gepackt heruntergeladen werden:

javawebstarttest.zip: Gepackter Ordner /htdocs/javawebstarttest mit Inhalt.
Erster Test von Java-Webstart

Die folgende Dokumentation setzt spezielle Installationspfade auf einem KNOPPIX-Betriebssystem 6.4 voraus. Diese Pfade sind bei der Übertragung auf andere Betriebssysteme anzupassen. Außerdem wird lokal getestet, d.h. als Basis-URL wird an jeder Stelle "http://localhost" eingetragen (anstatt beispielsweise http://www.kramann.info).

Der Beitrag von Michael Olp war dabei sehr nützlich.

  • Für diesen Test werden die notwendigen Dateien (jabes.jnlp und JabeS.jar) unter
  • htdocs/javawebstarttest
  • auf dem Apache-Server abgelegt.

1. Schritt: Server-Konfiguration

  • In /KNOPPIX-DATA/opt/lampp/etc/mime.types muß der MIME-Typ JNLP (Java Network Launching Protocol) eingetragen werden.
  • Dies geschieht durch Ergänzen der Zeile
  • application/x-java-jnlp-file JNLP
  • in dieser Datei (am besten unter Einhaltumg der alphabetischen Ordnung).
  • z.B.:
...
application/x-gtar		gtar
application/x-gzip
application/x-hdf		hdf
application/x-java-jnlp-file	JNLP
application/x-javascript	js
application/x-koan		skp skd skt skm
application/x-latex		latex
...

Code 4.2-1: Auszug aus der modifizierten Datei /KNOPPIX-DATA/opt/lampp/etc/mime.types.

  • Alternativ:
  • MIME-Typ über PHP-Skript im Header der HTML-Datei vorgeben:
<?php  header("Content-type: application/x-java-jnlp-file");

$JNLPINHALT = <<<INHALTJNLP
<?xml version="1.0" encoding="UTF-8"?>
  <jnlp  spec="1.0+"  
	codebase="http://localhost/javawebstarttest/"  
	href="jabes.php">
 <information>
 	<title>JabeS - Java based educational System</title>
	<vendor>Guido Kramann</vendor>
	<homepage href="http://localhost"/>
	<description>JabeS - Java based educational System</description>
	<description kind="short">JabeS - Java based educational System</description>
	<icon href="http://localhost/javawebstarttest/jabesicon.png"/> 
        <icon kind="splash" href="http://localhost/javawebstarttest/jabesicon.png"/>
	<offline-allowed/>
 </information>
 <security>
 	<all-permissions/>
 </security>
 <resources>
	<jar href="jabes.jar"/>         
 </resources>
 <application-desc main-class="jabes.JabeS"/>
</jnlp>
INHALTJNLP;

print($JNLPINHALT);

?>

Code 4.2-2: MIME-Typ über PHP-Skript im Header der HTML-Datei in Datei jabes.php vorgeben (wird verwendet bei Start über Web-Link/ XML-Teil s. weiter unten).

2. Schritt: Erstellen eines JNLP-Files


Über den Einbtrag <offline-allowed/> kann offenbar bestimmt werden, ob die Java-Webstart-Anwendung auch benutzt werden kann, wenn der Server nicht zur Verfügung steht. Hier bietet sich somit die Möglichkeit für Sicherheit bei E-Tests zu sorgen.



Weitere Ansatzpunkte über Einstellungen im JNLS-File unter dem Tag <security>.


Als Vorlage wird ein Beispiel aus der Anleitung bei ORACLE verwendet und angepaßt: http://download.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/syntax.html:


Code 4.2-3: Modifiziertes JNLP-File jabes.jnlp (wird bei Start von Konsole mit javaws verwendet).

3. Schritt: .jar-Datei signieren

  • Zunächst werden mit keytool die zu verwendenden Schlüssel erstellt (den Angaben folgen):
  • keytool -genkey -keystore jabesKeyStore -alias jabes
  • Dann das .jar-File signieren:
  • jarsigner -keystore jabesKeyStore -storepass PASSWORT -keypass PASSWORT jabes.jar JabeS

4. a) Schritt: Anwendung vom Client aus über eine Konsole starten

  • javaws http://localhost/javawebstarttest/jabes.jnlp

4. b) Schritt: Anwendung vom Client aus über Webbrowser starten

  • HTML-Seite index.html erstellen, die die Datei jabes.php verlinkt:
<html>
    <head>
    </head>
    <body>
            <a href=http://localhost/javawebstarttest/jabes.php>Anwendung starten</a>
    </body>
</html>

Code 4.2-4: index.html

  • Durch Aufruf der Seite (http://localhost/javawebstarttest/index.html) und Anklicken des Ankers kann nun die Anwendung gestartet werden.
Fazit
  • Der Aufruf eines Programms über Java-Webstart durch den Benutzer ist sehr einfach.
  • Der Zugriff auf das Programm kann über das .jnlp-File und die Signierung des .jar-Files sehr gut kontrolliert werden.
  • Das Sicherheitskonzept kann so vom Programm getrennt werden, was die Komplexität der Anwendung wesentlich vermindern kann.
  • Das unter Zuhilfenahme verschiedener Anleitungen zusammengestellte Beispiel funktionierte auf Anhieb. Es traten also nicht die zu erwartenden Komplikationen auf, die beispielsweise bei der Verwendung von JMF eine Anwendung fast unmöglich machen.
  • javax.jnlp.* bietet u.a. auch einen FileSaveService und einen PersistenceService, vergl. Anleitung bei Oracle, womit es möglich sein sollte z.B. E-Tests zu speichern.
  • Über die Option -validity kann der Gültigkeitszeitraum der jar-File-Signatur und damit auch die Programmnutzbarkeit begrenzt werden.
  • Aufgrund der oben angeführten Möglichkeiten, Anwendung und Anwendungssicherheit voneinander zu trennen und lokale Zugriffe auch für eine Web-Anwendung zu ermöglichen, werden alle weiteren Entwicklungsstufen von JabeS als Java-Webstart-Anwendung fortgeführt.
  • Hierdurch entfällt auch die umständliche Differenzierung zwischen Start als Applet und Applikation.