Consider the following code fragment which may appear in an Asynchronous Servlet:
According to the specification onStartAsync(AsyncEvent event) method should be called when startAsync() is called on the request object.
According to my understanding onStartAsync(AsyncEvent event) will never be called because the AsyncListener() is added to the AsyncContext AFTER calling startAsync(). (& there is no way to add the the AsyncListener() before calling startAsync())
This method clears the list of AsyncListener instances (if any) that were registered with the AsyncContext returned by the previous call to one of the startAsync methods, after calling each AsyncListener at its onStartAsync method.
Subsequent invocations of this method, or its overloaded variant, will return the same AsyncContext instance, reinitialized as appropriate.
Returns: the (re)initialized AsyncContext
If you want your listener to stay registered, even if some other code calls startAsync(), it needs to be re-registered in it's onStartAsync(AsyncEvent) method.