我正在使用 Jsp 和 servlet。在我的一个 jsp 页面中,我将调用一个 .sh 文件,该文件将执行 2-3 分钟,该过程完成后它将重定向到另一个 jsp 页面。 我的问题是用户必须等待 2-3 分钟,然后在流程完成后,只有他被重定向到下一页。我不希望发生这种情况,我想启动必须在后台运行的进程,并且我希望页面立即重定向。
process.jsp页面
FileWriter fileWriter = new FileWriter(file3,true);
BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter);
fileWriter.append(userid+"\t"+movie_id[i]+"\t"+ratings[i]);
fileWriter.append('\n');
bufferFileWriter.close();
Process p=Runtime.getRuntime().exec("/home/yoganandhd/project.sh");
p.waitFor();
response.sendRedirect("login.jsp");
在上面的代码中,执行project.sh将需要3分钟,其中它将执行一些数据挖掘过程,然后仅将其重定向到login.jsp页面。 我的要求是用户不能等待3分钟,必须通过后台运行project.sh立即重定向到下一页。
我是个新手,我对java不太了解,有人能告诉我如何实现这一点吗? 我可以使用线程来实现这一点吗?如果是的话怎么办? 请有人用相同场景的示例向我解释一下。
最佳答案
您可以创建一个新线程并单独执行shellscript。
public class MyThread extends Thread {
public void run(){
Process p=Runtime.getRuntime().exec("/home/yoganandhd/project.sh");
p.waitFor();
}
}
现在从实际流程中调用该线程,如下所示,而不是直接调用作业。
MyThread myThread = new MyThread();
myThread .start();
关于java - 如何在后台运行进程并重定向jsp页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258937/