Hi,

2016-05-17 13:46 GMT+03:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
>
> the real issue is adding a listener there trigger onStartAsync()*ONLY* (no
> onCompleted(), onTimeout(), onError() etc... cause
> org.apache.catalina.core.AsyncContextImpl#setStarted does
listeners.clear();
> )
>

That's behaviour is by spec:

"public void addListener(AsyncListener) - Registers the given listener for
notifications of onTimeout, onError, onComplete or onStartAsync. The first
three are associated with the most recent asynchronous cycle started by
calling
one of the ServletRequest.startAsync methods. The onStartAsync is
associated to a new asynchronous cycle via one of the
ServletRequest.startAsync
methods."

so you can do the following:

        public void onStartAsync(AsyncEvent event) throws IOException {
            // Re-add this listener to the new AsyncContext
            event.getAsyncContext().addListener(this);
        }

Regards,
Violeta

>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <http://rmannibucau.wordpress.com> | Github <
https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
>
> 2016-05-17 12:43 GMT+02:00 Rémy Maucherat <r...@apache.org>:
>
> > 2016-05-17 12:37 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
> >
> > > Only found https://bz.apache.org/bugzilla/show_bug.cgi?id=59261 which
> > > doesn't mean this code would be invalid
> > >
> > > Also if you add a listener eagerly you will have the start event and
> > loose
> > > all "end" (completed, timeout etc...) ones. This doesn't sound very
> > > reliable.
> > >
> > > Can you point me out the related issue please?
> > >
> > > The bugzilla title says: "Request getAsyncContext should throw
> > IllegalStateException if async is not started". So that's what happens
now.
> >
> > Rémy
> >

Reply via email to