使用运行脚本运行时.exec通过Java WebApp

2021-02-25 21:51:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个javawebapp,更像是使用HTTPServlets运行一些Java代码,这取决于用户输入的内容。我可以从用户那里获取信息,将其传递给我的java程序,并将其返回给接口。现在变得困难(而且相当烦人)的是尝试使用用户输入的信息并调用一个外部脚本(处理和回答用户请求需要这个脚本)。我已经在一个普通的独立java应用程序中测试了这部分代码,它工作得很好,但是每当我试图在我的web应用程序中运行它时,它要么永远挂起(我不知道它是否真的在运行脚本),要么甚至不运行脚本,只继续运行结果页面。在

我的代码是:

 public void runScript() throws InterruptedException{

    try{

        chkPy = new BufferedWriter(new FileWriter("Log.txt"));

        chkPy.write("Running Python Script");
        chkPy.newLine();

        runtime = Runtime.getRuntime();
        p = runtime.exec("cmd /c run.bat > python_results.log");

        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

        String line = "";
        while ((line = stdInput.readLine()) != null) {
      chkPy.write(line);
              chkPy.newLine();
        }
        while ((line = stdError.readLine()) != null) {
                chkPy.write(line);
                chkPy.newLine();
        }


        int exitVal = p.waitFor();

        chkPy.write("Exit Value" +exitVal);
        chkPy.flush();
        chkPy.close(); 

    }catch(IOException ex){

    }
}

更新

Netbeans提供了一个GlassFish服务器的实现,虽然听起来很蠢,但它并不是我第一次看到的地方(我只是现在才看的),但是脚本正在编译中。但似乎我遇到了另一个问题,因为即使脚本已经完成了文件的编写,webapp仍然会死锁。。。。我该怎么办??在