1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
3036
3036
EMPFEHLEN
-
31.08.05 17:38 #1
- Registriert seit
- Aug 2005
- Beiträge
- 17
Hallo allerseits
Ich arbeite an einem Applet, für das ich einige Einstellungen in eine XML-Datei speichere, die per JDOM verarbeitet wird. Der Pfad der Konfig-Datei wird per HTML-Parameter übergeben.
Lokal (bzw. im Appletviewer von JBuilder) funktioniert das Laden und Speicher der Datei ganz gut. Sobald sich das ganze auf dem Server befindet, fangen aber die Probleme an. Als erstes habe ich versucht, die Datei im selben Verzeichnis wie das Applet-Jar anzulegen. Ein Problem dabei ist, das die VM den Pfad immer lokal interpretiert, also vom Desktop aus. Wenn ich den ganzen (SMB-)Netzwerkpfad angegeben habe, ging es teilweise, aber ansonsten meldet der SAXBuilder immer wieder Fehler beim Verbinden mit der Datei.
Ein Kollege hat gemeint, ich soll die Konfig-Datei mit ins jar-Archiv packen, allerdings hab ich dort wiederum so meine Probleme gehabt (Wiederum hat es hier lokal sogar einmal funktioniert, auf dem Server allerdings wieder nicht mehr).
Meine Frage wäre nun, welcher Weg wohl der bessere ist und wie der am besten umgesetzt werden könnte.
Initialiserung der Config-Klasse:
Code :1 2
Conf = new Config(this.getParameter(String.valueOf("Config_File"))); //"Confi_File" wäre in dem Fall "config.xml"
Einlesen der XML-Datei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
public class Config { public Config(String filename) { FileName = filename; readConfig(); } static private Document ConfigFile; static public String FileName; //... //XML-Dokument aus Datei lesen und Konfiguration auslesen public void readConfig() { try { ConfigFile = new SAXBuilder().build(FileName); QueryList = new Vector(0); Element config = ConfigFile.getRootElement(); //----Allgemeine Einstellungen auslesen---- //... } catch (JDOMException jd_e) { jd_e.printStackTrace(); } } //... public void saveConfig(String filename) { FileName = filename; saveConfig(); } //XML-Dokument in Datei speichern public void saveConfig() { updConfigDoc(); XMLOutputter out = new XMLOutputter("\t", true); try { File outFl = new File(FileName); outFl.createNewFile(); FileWriter FlWr = new FileWriter(outFl); out.output(ConfigFile, FlWr); FlWr.close(); } catch (IOException e) { e.printStackTrace(); } } }
Es würde mich wiklich freuen, wenn mir jemand helfen könnte, denn danach wär mein Applet so gut wie fertig und ich könnte mich endlich mal etwas Neuem widmen
.
Auf jeden Fall möchte ich mich schon mal im Voraus bei euch für die Hilfe bedanken.
MfG UseTheSourceGeändert von UseTheSource (31.08.05 um 17:41 Uhr)
-
31.08.05 21:49 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Lesen und Schreiben von Dateien auf der Festplatte des Benutzers ist nur für signierte Applets erlaubt. Wenn deine Anwendung Daten von der Festplatte des Benutzers lesen oder schreiben soll mußt du sie signieren.
Hier ein beispiel, wie du deine Konfiguration aus einem jar heraus laden kannst:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
package de.tutorials.applet; import javax.swing.JApplet; import javax.swing.JLabel; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class AppletExample extends JApplet { String text; public void init() { try { SAXParserFactory.newInstance().newSAXParser().parse( getClass().getResourceAsStream("config.xml"), new DefaultHandler() { boolean isTextElement = false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals("text")){ isTextElement = true; } } public void characters(char[] ch, int start, int length) throws SAXException { if(isTextElement){ text = new String(ch,start,length); isTextElement = false; } } }); } catch (Exception e) { e.printStackTrace(); } } public void start() { add(new JLabel(text)); } }
Code :1 2 3 4 5 6 7 8
<html> <head> <title>AppletTest</title> </head> <body> <applet archive="applet.jar" code="de.tutorials.applet.AppletExample"/> </body> </html>
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
01.09.05 09:41 #3
- Registriert seit
- Aug 2005
- Beiträge
- 17
Vielen Dank für die Antwort!
Das Einlesen funktioniert jetzt endlich, aber fürs Speichern benötigt der XMLOutputter ja einen OutputStream, während getResourceAsStream() ja nur einen InputStream hergibt. Gibt es eine Möglichkeit die XML-Datei direkt wieder ins Archiv zu speichern oder muss ich sie vielleicht zurest irgendwo temporär abspeichern und dann ins Archiv packen?
Für alle Interessierten, noch meine Anpassung (das Applet war übrigens schon signiert):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//Constructor public Config(String resName) { ResName = resName; readConfig(); } //XML-Dokument aus Datei lesen und Konfiguration auslesen public void readConfig() { try { ConfigFile = new SAXBuilder().build(getClass().getResourceAsStream(ResName)); QueryList = new Vector(0); Element config = ConfigFile.getRootElement(); //----Allgemeine Einstellungen auslesen---- //... } catch (JDOMException jd_e) { jd_e.printStackTrace(); } }
MfG UseTheSourceGeändert von UseTheSource (01.09.05 um 10:40 Uhr)
-
02.09.05 14:32 #4
- Registriert seit
- Aug 2005
- Beiträge
- 17
Naja, das Schreiben ins Jar-Archiv habe ich mal für's Erste auf Eis gelegt. Ich lege jetzt die Konfigurations-Datei im Anwedungsdaten-Verzeichnis des Benutzers an und lese sie nur aus dem Archiv, wenn sie lokal noch nicht vorhanden ist, also sozusagen als Vorlage. Das hat den (eigentlich ganz nützlichen) Nebeneffekt, dass nun die Konfiguration benutzerspezifisch gespeichert wird.
Also, nochmals herzlichen Dank für die Hilfe!
MfG UseTheSource
(o_
//\-~_/ May the Source be with you!
V_/_
Ähnliche Themen
-
Frage zu Manifest Datei für Jar-archiv
Von voodinator im Forum JavaAntworten: 4Letzter Beitrag: 02.09.10, 12:19 -
jar-Datei in ein jar-Archiv einfügen
Von deni74 im Forum JavaAntworten: 3Letzter Beitrag: 04.12.07, 16:49 -
zip.lib.php - Zu großes Zip-Archiv in Datei auslagern..
Von Scope im Forum PHPAntworten: 1Letzter Beitrag: 15.08.05, 15:52 -
[batch] Archiv in Datei mit Name von Haute
Von dino4k im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 22.03.05, 22:47 -
zugriff auf datei im zip-archiv
Von thecooper im Forum Visual Basic 6.0Antworten: 5Letzter Beitrag: 02.08.03, 00:03





Zitieren

Login





