У меня есть пример проекта StockWatcher, использующего requestbuilder для связи с сервлетом ( этот пример ) Я хочу сделать сервлет асинхронным. Я добавил следующие строки в метод doGet:
final AsyncContext ac = request.startAsync();
ac.setTimeout(1 * 60 * 1000);
ac.addListener(new AsyncListener() {
@Override
public void onError(AsyncEvent arg0) throws IOException {
System.out.println("onError");
}
public void onComplete(AsyncEvent event) throws IOException {
System.out.println("onComplete");
queue.remove(ac);
}
public void onTimeout(AsyncEvent event) throws IOException {
System.out.println("onTimeout");
queue.remove(ac);
}
@Override
public void onStartAsync(AsyncEvent arg0) throws IOException {
System.out.println("onStartAsync");
}
});
queue.add(ac);
добавлена асинхронная аннотация: @WebServlet(asyncSupported=true)
и изменил оставшуюся часть метода doGet с помощью:
PrintWriter out = ac.getResponse().getWriter();
out.println("Something");
out.flush();
Теперь ничего не возвращается. Что я не прав? Нужно что-то менять на стороне клиента? Glassfish 3 не показывает ошибок.