Hallo zusammen,
ich habe folgendes Problem: Ich möchte von einem Applet aus eine Datei auf dem Server auslesen. Ich möchte diese Datei (TXT-Datei) sozusagen als Datenbankersatz verwenden. Gibt es eine Möglichkeit, dies zu realisieren ?
Ich habe bereits eine Klasse hierzu geschrieben, die im Appletviewer auch funktioniert (FileReader, BufferedReader). Aber die Browser bringen immer eine „java.io.FilePermission“. Scheinbar hat das Applet die nötigen Rechte nicht.
Gibt es irgendwelche Tricks ?
Ciao
Jochen
[email protected]
www.duerr.jochen.de
*schmunzel*
Tja, mit dem FileReader kann das nicht gehen!! Das Applet läuft auf irgend einem Browser irgendwo im Netz. Das hat in der Regel keinen Zugriff auf Dateien des Servers. (Es sei denn das Filesystem des Servers ist über das Lokale Netz eingebunden - Stichwort Laufwerkfreigabe, Samba …, aber selbst dann ist das nicht die saubere Art!)
Der andere Grund ist der, dass das Applet in einer ‚Sandbox‘ läuft, die keinen Zugriff auf lokale Dateien zulässt.
Was die Sandbox sehr wohl erlaubt sind weitere Netzwerkverbindungen zum Server. Am einfachsten ist es also, wenn Du die Datei auch über den HTTP-Server zur Verfügung stellst und sie mit java.net.HttpURLConnection in deinem Applet vom Server holst.
Gruß
Benky
Moin,
Ich habe bereits eine Klasse hierzu geschrieben, die im
Appletviewer auch funktioniert (FileReader, BufferedReader).
Aber die Browser bringen immer eine „java.io.FilePermission“.
Scheinbar hat das Applet die nötigen Rechte nicht.
Benutze Netzwerkprotokolle. Mit Dateiprotokollen greifst Du auf den Rechner zu, auf dem das Applet läuft.
Thorsten
ich habe folgendes Problem: Ich möchte von einem Applet aus
eine Datei auf dem Server auslesen. Ich möchte diese Datei
(TXT-Datei) sozusagen als Datenbankersatz verwenden. Gibt es
eine Möglichkeit, dies zu realisieren ?
Eine weitere Möglichkeit zu den bereits genannten wäre es eine RMI-Klasse zu schreiben die dann am Server läuft und den Zugriff auf die Datei übernimmt.
Im Applet greifst du dann über RMI auf diese Klasse zu.
RMI-Programmierung ist relativ simpel, schau dir mal die Beispiele unter folgendem URL an:
http://java.sun.com/products/rmi-iiop/index.html
Grüße, Robert
- Dann versuch das mal über eine Firewall bzw.
Proxy-Server!!!
RMI läuft über HTTP-Proxy. Auch über Firewall wenn man den entsprechenden Port freischaltet.
- Versuch mal nem Provider beizubringen, dass er unbedingt
Java auf dem Freespace-Server installieren muss!!
Nojo, irgendwelche serverseitige Logik muss geboten werden, wenn er serverseitig Daten speichern will. Muß nicht Java sein, aber da sich die Frage um Java drehte …
- Warum soll er nicht gleich ein völlig neues
Netzwerk-Protokoll entwickeln um an seine Datei zu kommen??
Hab mal gehört, man kann einen Spatz auch fangen indem man mit
ner Kanone auf ihn schießt. ;o)
Da muss man kein neues Netzwerkprotokoll entwickeln, das gibts schon von Sun. 
Und ob die Methode für seine Zwecke zu aufwendig ist, muß er halt entscheiden, ich habe nur geschrieben, dass es so machbar ist (und wie gesagt nicht sehr aufwendig/kompliziert).
Grüße, Robert
Moin,
- Versuch mal nem Provider beizubringen, dass er unbedingt
Java auf dem Freespace-Server installieren muss!!
Nojo, irgendwelche serverseitige Logik muss geboten werden,
wenn er serverseitig Daten speichern will. Muß nicht Java
sein, aber da sich die Frage um Java drehte …
Es wird vermutlich HTTP sein.
Und ob die Methode für seine Zwecke zu aufwendig ist, muß er
halt entscheiden, ich habe nur geschrieben, dass es so machbar
ist (und wie gesagt nicht sehr aufwendig/kompliziert).
Er will eine .txt-Datei lesen. Das dürfte mit HTTP einfacher sein als mit RMI.
Thorsten
Er will eine .txt-Datei lesen. Das dürfte mit HTTP einfacher
sein als mit RMI.
Wenns ums reine lesen geht, dann bestimmt, falls aber auch Schreiben …
Grüße, Robert