Dateien zw. servern verschieben (internet)?
-
Hallo,
ich hab ein Java-Applet was auf einem Externen Webserver ausgeführt werden soll. dieses Applet benötigt aber daten, die wiederum auf einem internen( bei mir stehenden server liegen).
Faktisch geht es darum, eine Textdatei von server A zu server B in einer zyklischen wiederholung zu schieben.
Meine Frage wäre jetzt wie macht man sowas am sinnigsten oder gibt es auch andere möglichkeiten?
Ich dachte erst an sowas wie einen mini-ftp den man schreibt oder gibt es da bessere möglichkeiten?
mfg
-
hallo albert,
zunächst muss ich sagen, daß ich die lösung der daten in einer textdatei eher als unpraktisch empfinde. ich hätte vermutlich an deiner stelle eher versucht eine datenbankbasierende lösung zu entwickeln. da hättest du dann die möglichkeit per stored-procedure bei datenänderung die daten zu einer anderen datenbank übertragen zu lassen. und auf die sollte dann das applet zugreifen.
aber auf dein problem zurückkommend: ist natürlich auch die frage, welches OS du auf deinem internen server laufen hast. bei unix/linux würde ich einen cronjob schreiben, der (grobe lösung) alle paar sekunden bzw. minuten die datei auf den externen server schreibt. befehle für den ftp-zugriff stehen und linux ja zur verfügung. unter windows wäre das dann beispielsweise durch eine batch-datei oder ein shell-script zu lösen, welches durch den taskplaner regelmäßig aufgerufen wird. auch hier gibt es zu kostenlosen download entsprechende programme, die du befehlszeilenbasierend aufrufen kannst, um den ftp-zugriff auf den externen webserver zu realisieren. natürlich (elegantere lösung) kannst du auch zunächst einen dateivergleich mit einer lokal temporär gespeicherten version machen, damit du nur dann auf den webserver schreibst, wenn sich die lokalen daten auf deinem internen server geändert haben. aber um letztlich auch eine java-basierende lösung vorzuschlagen: du kannst natürlich auch eine java-applikation schreiben, die du auf deinem internen server laufen lässt, die genau dies macht. damit hast du dann auch gute eingriffsmöglichkeiten in den ablauf und musst dir auch keine lokale temporäre datei zum vergleich anlegen (natürlich nur unter der vorraussetzung, daß die datei, von der wir hier sprechen, problemlos in den java zur verfügung stehenden arbeitsspeicher passt, sonst kommst du um die temporäre datei nicht herum).
die lösung über den mini-ftp halte ich für weniger sinnig, da du ja damit auf deinem internen server eine andere zugriffsart ermöglichst, für diese zugriffsart aber noch keinen dienst hast, welcher dir dein problem löst. davon abgesehen kann der interne server selbst ja auch ohne ftp-protokoll auf die datei auf seiner festplatte zugreifen, womit das so installierte ftp-protokoll unnötig wäre.
bestimmt aber gibt es noch viele andere lösungen um dein problem in den griff zu bekommen. wenn du nach lösungen suchst, suche in betriebssystemspezifischen foren nach tasksceduling bzw. cronjob sowie ftp-access/-transfer per skript. oder wie gesagt mit einer java-app, welche aus einem einzelnen Thread besteht, der die datei einliest, puffert, ggf. mit dem bestehenden puffer vergleicht und dann im falle des falles uploaded.
übrigends musst du nicht zwangsläufig per ftp die dateien auf den externen webserver schreiben (bin da halt vom standardfall des webhostings ausgegangen, wo einem ein ftp-account zu datenübertragung zur verfügung gestellt wird). ich habe uploads auch schon über php gelöst. ein kurzes php-skript auf deinem webspace reicht aus, welches per POST-methode oder einfach als URL-Encodetes parameter die daten erhält und diese in eine datei in ein verzeichnis deiner wahl schreibt. soetwas lässt sich selbstverständlich auch als servlet oder simple JSP realisieren.
ich hoffe, ich konnte dir wenigstens ein bischen weiterhelfen
viel erfolg
wayne
-
applets werden beim benutzer ausgeführt nicht auf dem server
-
ja, richtig, applets werden beim benutzer ausgeführt. bin mal davon ausgegangen, daß sich albert da einfach nicht korrekt ausgedrückt hat und meinte, daß das applet von einem externen webserver (internet) aus aufgerufen wird und sich seine daten in form eines textfiles von diesem zieht. bitte um korrektur, falls diese annahme falsch war.
grüße
wayne