我创建了一个Java WebApp,更像是我使用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死锁,尽管脚本已经完成了文件的编写....我该如何解决这个问题?