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).
- 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>.
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.
|