Выполнить метод без блокировки клиента

Я использую Java для создания веб-приложения. Приложение должно загрузить форму, которая отправляет свои данные в jsp, который вызывает длинную бизнес-логику. Мне нужно, чтобы jsp вернул сообщение типа "спасибо за использование моего сервиса, по завершении процесса вам будет выслано письмо".

Проблема в том, что если я напишу что-то вроде:

<html>
<head></head>
<body>
...
<span>thank you for using my service, an email will sent to you when the proccess is done</span>
...
<% businessClass.doLongOperation(); %>
...
...
</Body>
</html>

JSP будет работать в течение длительного времени, и пользователь должен будет ждать завершения операции. Более того, если пользователь закроет браузер, я не уверен, что jsp продолжит свою работу.

Как я могу изолировать длинную операцию от jsp, чтобы пользователю не приходилось ждать все время выполнения, а также как сделать так, чтобы выполнение длинной операции не зависело от браузера?

Naor

1 ответ

Ваш JSP, вероятно, поддерживается на стороне сервера сервлетом или Struts Action или Spring MVC Controller.

В этом объекте выполните асинхронное выполнение:

executor.execute(new Runnable() {

    public void run() { businessClass.doLongOperation(); }
});

Где executor это пример java.util.concurrent.Executor,

Другие вопросы по тегам