Запуск потока в Servlet-е Java

246
22 апреля 2017, 22:55

Подскажите пожалуйста как запустить другой поток в сервлете что бы в нём выполнить нужные действия? Проблема в том что я делаю определенные действия на которые тратится не малое кол-во времени - скриншот экрана по url. Делаю я это AJAX запросом и проблема в том что пока это функция не отработает мне ответ не придёт. Хотелось бы что бы ответ приходил быстро. Иначе как другой поток я не знаю как сделать. Гуглил, нашел такой пример:

@WebServlet("/foo" asyncSupported=true)
   public class MyServlet extends HttpServlet {
        public void doGet(HttpServletRequest req, HttpServletResponse res) {
            ...
            AsyncContext aCtx = request.startAsync(req, res);
            ScheduledThreadPoolExecutor executor = new ThreadPoolExecutor(10);
            executor.execute(new AsyncWebService(aCtx));
        }
   }
   public class AsyncWebService implements Runnable {
        AsyncContext ctx;
        public AsyncWebService(AsyncContext ctx) {
            this.ctx = ctx;
        }
        public void run() {
            // Invoke web service and save result in request attribute
            // Dispatch the request to render the result to a JSP.
            ctx.dispatch("/render.jsp");
   }
}

Но у меня не работает пишет ошибку:

A filter or servlet of the current chain does not support asynchronous operations

Хотя asyncSupported=true я поставил.

Как ещё можно запустить поток? Спасибо.

READ ALSO
Запуск тестов из командной строки

Запуск тестов из командной строки

Как запустить локально unit test'ы в командной строке?

330
Как остановить процесс игры?

Как остановить процесс игры?

В игре несколько цветных шариков появляются каждую секунду и исчезаютИгрок должен выбрать правильную последовательность

319
Создание ехе файла с java проекта

Создание ехе файла с java проекта

Есть готовый десктопный проект на Java, с GUI интерфейсомПроект был разработан в среде Intellij Idea

221