2012-05-28 25 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

    相关问题