Jan Peters-Anders: Servlet: Von php aus geschriebenes File prüfen

Beitrag lesen

Hallo allerseits,

ich habe ein etwas kniffliges Problem: Da ich zwei Applikationen für ein Projekt miteinander verbinden muss (ein Java Servlet und eine php Anwendung) muss ich momentan mit:

Runtime.getRuntime().exec(php_command);

ein php file ausführen, dass seinerseits ein Log File auf die Platte schreibt. Was es auch tut, soweit so gut. Mein Java Servlet soll dann im Anschluss das File lesen (was es unter Windows/Tomcat) auch wunderbar macht, nur unter Linux wird die Datei immer nur halb gelesen, obwohl sie vollständig auf der Platte liegt (wie man mit vi leicht feststellen kann). Das sieht dann ungefähr so aus:

Servlet liest nur:
--------------8<----------------------
Integrity check1
0
--------------8<----------------------

obwohls so aussehen sollte:

--------------8<----------------------
Integrity check1
0
Integrity check2
0
Integrity check3
0
--------------8<----------------------

Die Ganzen Geschichten in Java mit File.exists() etc. bringen anscheinend garnichts, da das File existiert, aber halt noch nicht vollständig geschrieben wurde. So Sachen wie:

FileDescriptor fd = os.getFD();
os.flush();
fd.sync();

bringen mir auch nichts, da dann das System rumschreit, es seien zu viele Files offen (was wohl daher kommt, dass das File ja gerade von php geschrieben wird).

Nun meine Frage: Weiß vielleicht jemand hier im Forum wie ich (zur Not auch "dirty") das Servlet solange in Schach halten kann, bis das File vollständig geschrieben wurde? Bzw. wie ich mit Java herausfinden kann, ob das File momentan noch größer wird, vollständig geschrieben wurde (dürfte schwierig werden, wenn ich die Endgröße nicht weiß) oder ähnliches? (Natürlich sind auch wesentlich weitergehende Vorschläge willkommen).

Danke schon mal im Voraus

Jan