On 24/05/2013 10:15, jie tang wrote: > I tried the following code: > final AsyncContext async = req.startAsync(); > async.setTimeout(30000); > > async.addListener(new AsyncListener(){ > > @Override > public void onComplete(AsyncEvent event) throws IOException { > System.out.println(Thread.currentThread()+"onComplete"); > > } > > @Override > public void onTimeout(AsyncEvent event) throws IOException { > System.out.println(Thread.currentThread()+"onTimeout"); > > } > > @Override > public void onError(AsyncEvent event) throws IOException { > System.out.println(Thread.currentThread()+"onError > "+event.getThrowable()); > > } > > @Override > public void onStartAsync(AsyncEvent event) throws IOException { > System.out.println(Thread.currentThread()+"onStartAsync"); > > } > > }); > > async.start(new Runnable(){ > > @Override > public void run() { > try { > async.getResponse().getWriter().write("22222"); > async.getResponse().getWriter().flush(); > System.out.println(Thread.currentThread()+"run"); > } catch (IOException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > > }); > > The output: > Thread[http-bio-80-exec-4,5,main]run > Thread[http-bio-80-exec-5,5,main]onTimeout > Thread[http-bio-80-exec-5,5,main]onError null > Thread[http-bio-80-exec-5,5,main]onComplete > Although the Runnable writes some content. The onTimeout method is still > invoked.
As expected. 30s after you write the content, the timeout is triggered. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org