2012-05-28 65 views

回答

3
  1. 嵌入腳本的Web應用程序,在例如戰爭文件的根目錄。

    String scriptPath = getServletContext().getRealPath("/script.sh");

  2. 運行腳本使用的ProcessBuilder類:

    new ProcessBuilder("/bin/sh", scriptPath).start();

注意,

  • 一旦應用程序部署獲取的文件路徑如果您的servlet容器不提取war文件的內容,則步驟2可能會失敗。在這種情況下,您必須將該腳本作爲類路徑中的資源,將其內容複製到臨時文件中,然後在其中運行腳本。

  • +0

    存在涉及此解決方案的安全問題,因此應謹慎使用。如果您在戰爭中放置腳本,用戶可以看到腳本源代碼。 IMO最好使用CGI解決方案,因爲它旨在通過設計來處理外部程序。 –

    +0

    1-ok.2和3:我在servlet中有他們?如何知道3.是否正在工作? – oikonomopo

    +0

    您可以在由ProcessBuilder創建的Process上調用'getInputStream()'來跟蹤腳本的輸出。 –

    2

    您必須搜索如何在Tomcat上啓用和使用CGI。

    CGI(通用網關接口)定義了一種Web服務器與外部內容生成程序(通常稱爲CGI程序或CGI腳本)交互的方式。

    來源:Apache Tomcat 7 Documentation: CGI How To

    相關問題