More comments below,

On 26/11/12 12:21, Sergey Beryozkin wrote:
Hi Richard
On 26/11/12 12:15, Richard Opalka wrote:
Dear CXF developers,

I'm analyzing our recent CXF continuation related failures in CI
and I identified the following problem:

SVN commit id: 1409193

introduced

---
@@ -57,32 +57,30 @@ public class Servlet3ContinuationProvider implements
ContinuationProvider {

if (continuation == null) {
continuation = new Servlet3Continuation();
+ } else {
+ continuation.startAsyncAgain();
}
return continuation;
}
---

method call that causes our JBossWeb to throw IllegalStateException.
According to startAsync() javadoc for Throws:

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#startAsync%28%29


---
Throws:
IllegalStateException - if this request is within the scope of a
filter or servlet that does not support asynchronous operations (that
is, isAsyncSupported() returns false), or if this method is called again
without any asynchronous dispatch (resulting from one of the
AsyncContext#dispatch methods), is called outside the scope of any such
dispatch, or is called again within the scope of the same dispatch, or
if the response has already been closed
---

I actually read "is called again within the scope of the same dispatch" differently, a continuation thread is dispatched one or many times, but if you get startAsync() called within a specific thread dispatch more than once then it is indeed an ISE.

I guess my reading may be wrong - but the fact that I get the tests working with Tomcat and Jetty might imply that may be JBossWeb might treat this case specifically ?


JBossWeb is strictly following these ISE guidelines (is not lenient
like e.g. Jakarta Tomcat).

CC-ing Bill too - the feedback is welcome

Finally, what continuation tests are actually failing, can you provide more info please

Cheers, Sergey


What would you say about
"Subsequent invocations of this method, or its overloaded variant, will
return the same AsyncContext instance, reinitialized as appropriate. " ?

Without this call I can not have the test doing multiple timeouts on the
same continuation working...


The last issue that I identified with Servlet3ContinuationProvider is
the isNew flag has incorrect initial value - it should be *true*.
Sure - needs to be fixed

Thanks, Sergey


Cheers,

Rio



Reply via email to