![](/img/trans.png)
[英]How to hit a servlet class with ServletContextListener from Jsp page button click
[英]How to stop servlet processing from jsp page by button click
我创建了一个调用 servlet 的 JSP 页面。 该 servlet 的总处理时间至少为 5 分钟。 在该 servlet 进程完全完成之前,我想停止该进程并再次使用不同的参数进行调用。
我想从我的 JSP 页面单击一个按钮,该按钮可以停止 servlet 的整个进程。
您可以使用 java 执行器框架来完成。
ExecutorService executorService = Executors.newFixedThreadPool(10);
Future<String> startedTask = executorService.submit(() -> {
System.out.println(Thread.currentThread().getName() + " started!");
try {
Thread.sleep(2 * 60 * 1000);//TODO: here goes your heavy task which tooks long to process
} catch (InterruptedException e) {
e.printStackTrace();
}
return "completed at " + System.currentTimeMillis();//here you can return your results if you need any
});
session.setAttribute(ATTRIBUTE_NAME_WORKING_TASK, startedTask);
另外,如果你想在 servlet 处理时阻止你的 UI,你可以在上面的行之后调用下面的方法(我不认为有人想要这样做)
String result = startedTask.get();
Object task = session.getAttribute(ATTRIBUTE_NAME_WORKING_TASK);
if (task == null)
return "Task doesnt exists";
if (task instanceof Future)
((Future<String>) session.getAttribute(ATTRIBUTE_NAME_WORKING_TASK)).cancel(true);
这将取消您的任务,即使您已阻止正在等待 servlet 进程的 UI,也将被解除阻止
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.