ANWENDUNGSGESTALTUNG
Fehler bei einem Applet beheben, das nicht läuft
Auf Ressourcendateien zugreifen
Von Java(TM)-Applets werden häufig Ressourcendateien wie Bild- und Audiodateien verwendet. Es gibt drei übliche Arten, auf die Applets auf diese Dateien zugreifen:
Eine vollständige URL angeben
Wenn Ihr Applet eine vollständige URL angibt, über die eine Ressourcendatei auffindbar ist (z. B. getImage("http://www.irgendwo.com/bilder", "bild.gif"), versucht das Applet, diese Datei unter dieser URL zu finden. Das funktioniert normalerweise, wenn Sie Applets im IBM® Lotus® Notes®-Client in einem Dokument starten, wobei die Server-Tasks vom Domino-Server übernommen werden. Allerdings muss Ihr Notes-Client richtig konfiguriert sein, sodass er auf Dateien im Internet zugreifen kann.
Dementsprechend können Sie auf Bilder zugreifen, die an Notes-Dokumente angehängt sind, indem Sie die Domino-URL so umschreiben, dass ein "$FILE" enthalten ist (z. B. getImage("http://www.irgendwo.com/datenbank.nsf/Hauptansicht/862..12E/$FILE", "bild.gif")). Wie im obigen Beispiel muss der Notes-Client die Zugriffsmöglichkeit auf den Domino-Server haben, damit ein im Notes-Client ausgeführtes Applet auf diese Datei zugreifen kann.
Die Nachteile beim Angeben einer vollständigen URL für eine Appletressourcendatei bestehen darin, dass der Zugriff auf diese Datei über das Internet unter Umständen langsam ist und nicht alle Notes-Clients so eingerichtet sind, dass Sie direkt auf das Internet zugreifen können. Außerdem wird bei diesem Verlauf davon ausgegangen, dass die Adresse der Datei sich nicht ändern wird. Wenn diese Punkte für Sie nicht problematisch sind, ist die Angabe einer vollständigen URL eine zuverlässige Methode zum Zugriff auf Ressourcendateien.
getDocumentBase verwenden
Die unzuverlässigste Art, Ressourcendateien anzugeben, stellt die Methode getDocumentBase dar. Die Methode getDocumentBase zum Festlegen der Ressourcendateien gibt die Basis-URL (d. h. die vollständige Dokument-URL minus dem Dateiname des Dokuments) von dem Dokument zurück, in dem sich das Applet befindet. Wenn z. B. ein Applet in einem Dokument mit der Adresse
http://www.irgendwo.com/test/beispiel.html
ausgeführt wird, liefert die Methode getDocumentBase eine URL zurück, die Folgendes angibt:
http://www.irgendwo.com/test
Von einigen Applets wird diese Methode zum Angeben einer URL für Ressourcendateien verwendet, z. B. getImage(getDocumentBase(), "bild.gif"). In dem obigen Beispiel würde das Applet die Bilddatei unter der folgenden URL suchen:
http://www.irgendwo.com/test/bild.gif
Beachten Sie jedoch, dass eine Domino-URL für ein Dokument nicht einfach auf eine Datei verweist; stattdessen handelt es sich um einen Befehl für den Domino-Server, den HTML-Text zu generieren, aus dem ein Dokument besteht. Wenn Sie die Methode getDocumentBase als Domino-URL verwenden, erhalten Sie unerwartete Ergebnisse. Angenommen, Sie haben ein Applet mit der folgenden Domino-URL verlinkt:
http://www.irgendwo.com/datenbank.nsf/Hauptansicht/862..12E?OpenDocument
In diesem Fall wird beim Verwenden der Methode getDocumentBase zusammen mit dem Methodenaufruf getImage Folgendes zurückgeliefert:
http://www.irgendwo.com/datenbank.nsf/Hauptansicht/bild.gif
Das Applet kann die Datei nicht finden, weil die Dokument-ID fehlt und das Bild ein Dateianhang eines Dokuments ist und deshalb eine Kennung $File als Teil des Namens erforderlich ist.
Da die ID des Dokuments entfernt wurde (und da das Bild sich in einem Dateianhang des Dokuments befindet und deshalb "$FILE" zum Bestimmen des Dateinamens benötigt), kann das angeforderte Bild vom Applet nicht gefunden werden.
getCodeBase verwenden
Die zuverlässigste Art, eine Ressourcendatei für ein Applet anzugeben, ist die Methode getCodeBase. Von der Methode getCodeBase wird die Basis-URL zurückgegeben, von der das Applet geladen wurde. Die Code-Basis für ein Applet können Sie im APPLET-Tag mit dem Attribut CODEBASE angeben. Wenn Domino HTML-Code für ein Applet generiert, das in ein Notes-Dokument eingefügt wurde, wird eine vollständige URL für das Attribut CODEBASE erstellt. Wenn z. B. das obige Beispiel verwendet wird, gibt die Methode getCodeBase Folgendes zurück:
http://www.irgendwo.com/datenbank.nsf/Hauptansicht/862..12E/$FILE
Bei einer Verwendung mit Ressourcen-Anforderungen wie getImage gibt getCodeBase die Ressourcendatei richtig an. Beispiel:
getImage(getCodeBase(), "bild.gif")
ergibt die folgende URL, wenn das Applet von Domino bedient wird:
http://www.irgendwo.com/datenbank.nsf/Hauptansicht/862..12E/$FILE/bild.gif
Dies hat eine URL zum Ergebnis, mit der das Applet die Datei erfolgreich ausfindig machen kann.
Parameterwerte zum Auffinden von Ressourcendateien ändern
Einige Applets enthalten Parameter, die auf Ressourcendateien oder auf Verzeichnisse verweisen, in denen Ressourcendateien enthalten sind. Ein Applet könnte z. B. einen Parameter enthalten, mit dem eine Datei zur Verwendung als Hintergrundbild oder ein Verzeichnis für Audiodateien angegeben wird. Sie müssen möglicherweise das Applet dahingehend bearbeiten, dass diese Parameter relativ zur Code-Basis und nicht zur Dokument-Basis angegeben werden.
Wenn Sie das Applet nicht selbst programmieren, wenn Sie beispielsweise einen Link mit einem Applet im Internet einbauen oder wenn Sie sich einen Satz von .class-Dateien ohne den zugehörigen Quellcode besorgt haben, müssen Sie vielleicht einen Parameterwert ändern, nachdem Sie das Applet in eine Maske oder ein Dokument eingefügt haben. Stellen Sie in diesem Fall die Zeichenfolge "$notes_codebase" dem Parameterwert voran.
Verwenden Sie z. B. anstelle von "bilder/bild.gif" die Zeichenfolge "$notes_codebase/bilder/bild.gif" als Parameterwert. Domino konvertiert jedes Vorkommen der Zeichenfolge $notes_codebase in einem Parameter in die Code-Basis für das Applet. Der Parameterwert "$notes_codebase/bilder/bild.gif" wird also von Domino folgendermaßen konvertiert:
http://www.irgendwo.com/datenbank.nsf/Hauptansicht/862..12E/$FILE/bilder/bild.gif
Da dies im Effekt bedeutet, dass Sie eine vollständige URL zur Verfügung stellen, wenn Sie einen Parameterwert angeben, wird die Methode getDocumentBase im Applet übergangen, und das Applet kann die Ressourcendatei finden.
Siehe auch