[英]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.