[英]Java process on Mac OSX seems to “hang” when invoked via webserver, but OK from the commandline
我有一個非常奇怪的情況,當通過Apache / PHP調用時,Java進程似乎掛起,但是從命令行調用時可以正常。 我花了幾個小時調試這個,沒有用。 歡迎任何和所有的想法!
情況:我有一個.class文件(沒有原始Java代碼),它讀取輸入文件,處理讀取信息,並在stdout上寫入報告。 Java代碼不讀取stdin,只寫stdout。 我把它包裝在一個很小的Perl腳本中,基本上只執行“java -cp / path / to / classfile MyJavaProgram / path / to / inputfile / to / process”。 這樣我就可以從命令行調用它進行測試,這就像一個魅力。 接下來,我嘗試使用popen()從PHP調用它,並且Java只是掛起。 我在ps列表中看到了Perl進程和Java; 但Java進程永遠等待。 一旦我殺了它,webserver頁面就會繼續加載(但當然沒有Java進程會產生的預期輸出)。
到目前為止我嘗試了什么:
不幸的是,我不能用我控制的東西替換Java代碼。 我只有.class文件可以使用。 我還沒有嘗試過在Linux下運行它,所以這仍然可能是OSX特定的問題(這會讓我感到驚訝)。
這到底是怎么回事? 任何和所有“狂野”的想法都贊賞...謝謝!
從apache和cmd行檢查所有環境,包括路徑,UID等。
還要檢查掛起時java進程執行的操作(使用truss / tusc / strace -f java xxxxxxxxxxx 2> / tmp / trace。$$)從兩個位置(apache和cmdline)包裝它,然后比較結果。
另外,當從perl包裝時,在執行java之前將stofout,stdout,stderr的autoflush設置為1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.