Привет всем Я использую Struts1.1, при нажатии кнопки в JSP у нас есть много данных для обработки, которые связаны с проверкой БД, и для миллионов записей требуется более 2 ч. Итак, мы хотим выполнить в фоновом режиме с использованием службы-исполнителя и будущей задачи java асинхронно. Таким образом, пользователь может свободно перемещаться на другие страницы, когда выполняется фоновая обработка, и когда этот процесс завершен, пользователь может вернуться к тому же самому jsp, чтобы щелкнуть другой кнопка (активируется после того, как обработка производится) для просмотра результата обработки данных: Вот мой класс действия:Как контролировать фоновую задачу, выполняемую будущей задачей
ServletContext servletContext=getServlet().getServletContext();
ExecutorService poolService = (ExecutorService) servletContext.getAttribute("threadPoolAlias");
AdminBlocageBackgroundProcessing adminBlocageBackgroundProcessing= new AdminBlocageBackgroundProcessing(fichier,blocage);
Future<ArrayList> future= poolService.submit(adminBlocageBackgroundProcessing);
Это моя модель класса, где выполняются валидация базы данных:
public class AdminBlocageBackgroundProcessing implements Callable {
private FormFile fichier;
private String blocage;
public ArrayList data=null;
public AdminBlocageBackgroundProcessing(FormFile fichier, String data) {
this.fichier=fichier;
this.blocage=data;
// TODO Auto-generated constructor stub
}
public Object call() {
// TODO Auto-generated method stub
try{
data = ImportMetier.extractFromCSV(
new String(fichier.getFileData(),
"ISO-8859-1"),blocage);
}
catch (Exception e) {
e.printStackTrace();
}
return data;
}
сейчас мой вопрос в том, как мне удастся контролировать выполнение этого метода «вызова» на уровне приложения, так что когда его завершение я смогу показать результаты обработки данных.
и самое главное, я хочу, чтобы выполнить его в фоне, так что пользователь может свободно перемещаться в других частях приложения, так что я не могу использовать
data=future.get();
, потому что это приведет к основному потоку ждать до метода вызова не завершено.
Заранее спасибо :-)
Ну, я определенно использовал метод будущегоget(). , но главной проблемой, с которой я столкнулся, я не смог отслеживать метод фонового вызова. с использованием статической переменной и автоподключение JSP helpd me. – Bazooka