GWT requestbuilder с асинхронным сервлетом 3.0 - PullRequest
3 голосов
/ 05 мая 2010

У меня есть пример проекта 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 не показывает ошибок.

1 Ответ

5 голосов
/ 28 марта 2012

Вы не делаете ничего плохого. GWT использует сервлет 2.5, и он блокируется, если вы попробуете что-то асинхронное. У меня та же проблема сейчас, хотя я использую Vaadin (который использует GWT). Ссылку, которую я нашел по теме: http://comments.gmane.org/gmane.org.google.gwt/48496

Есть страница, утверждающая, что проблема решена: http://blog.orange11.nl/2011/02/25/getting-gwt-to-work-with-servlet-3-async-requests/

Я еще не смог попробовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...