如何在后台运行进程并重定向jsp页面

时间:2014-06-17 08:20:08

标签: java multithreading jsp servlets

我正在使用Jsp和servlets。在我的一个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可以有人说我怎么能实现这个? 我可以用线程来实现吗?如果有,怎么样? 有人请用相同场景的例子向我解释。

1 个答案:

答案 0 :(得分:0)

您可以创建一个新线程并单独执行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();
相关问题