我创建了一个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仍然会死锁。。。。我该怎么办??在
在不同的线程中读取输入和错误流。在
或者使用Commons Exec库:http://commons.apache.org/exec/
相关问题 更多 >
编程相关推荐