2010-01-24 70 views
42

我有一個網站,並希望能夠允許用戶在網站上運行服務器上的Java文件。從網站上的PHP腳本運行Java類文件

我希望用戶點擊一個按鈕,它將在服務器上運行Java文件,並且任何打印到Java程序的標準輸出都將打印在網站上供用戶查看。

這怎麼能做到(從PHP調用Java程序並將標準從Java文件實時返回到PHP網站)?

更新:

感謝如何運行從PHP Java程序的答案。不過,我也希望能夠,因爲Java程序正在打印到標準輸出,它將在執行時打印出大量文本,以便能夠在網頁上打印出來,以便用戶可以看到哪個階段Java程序正在執行中。

如何做到這一點,它需要任何額外的AJAX或JavaScript或類似的東西?

回答

44

的PHP exec()功能是要走的路,但你應該非常在你允許小心執行..換句話說,不依賴於用戶的輸入,因爲它可能會危及您的整個服務器。

使用exec調用Java應用程序啓動器,可以執行PHP中的任何Java應用程序,例如,

<?php exec("java -jar file.jar arguments", $output); ?> 
+1

HI詹姆斯,執行Java是給我的權限被拒絕的錯誤。我的用戶是Apache。 – 2014-04-12 05:59:36

14

既然你提到的實時我建議設立一個PHP到Java橋。在每個請求中初始化JVM佔用大量資源。

PHP/Java Bridge

的PHP/Java橋是 執行流傳輸的, 基於XML的網絡協議,其可以 被用來連接一個本地腳本 引擎,例如PHP,方案或 Python,帶有Java或ECMA 335 虛擬機。它比通過SOAP的本地RPC快 的50倍, 在網頁服務器端需要更少的資源。它比通過Java Native 接口的直接 通信更加可靠並且它不需要 附加組件來調用來自PHP的Java 程序或來自Java的PHP程序 。

4

我寧願包裝在一個Java小程序,然後可以從客戶端JavaScript調用調用Java類:看http://www.rgagnon.com/javadetails/java-0170.html

否則,如果調用拋出大量的文字來由於系統依賴關係,標準輸出或類必須在服務器上運行,所以從php exec調用是一種方式,但您可能需要類似之類的信息來實時顯示客戶端上的文本。有各種javascript工具包的實現,如Dojo或jQuery。

對於服務器端,php here似乎有一個cometd實現。

我希望這有助於...

菲利普