This looks to be a bug. Not sure yet if it's in Jetty or in the CXF wrapper. Still kind of digging.
Dan On Wed June 17 2009 7:59:30 am Hannes Schubert wrote: > Hi all, > > with several examples I observed that a jetty continuation is bound to the > client thread, which initiated its instantiation, e.g: > > 1. client thread invokes serviceMethod() first time > > 2. service impl gets a new continuation instance with state > new=true,pending=false,resumed=false > ...something might happen inbetween, the reason why continuations are > used... > > 3. anyhow the continuation's resume() method is called, and thereby the > service impl is invoked a second time with same continuation instance and > state new=false,pending=true,resumed=true > > 4. client thread get's the result > > 5. same client thread submits a second call to the same serviceMethod() > > 6. service impl gets the same continuation instance with state > new=false,pending=false,resumed=false a second time > > I tried to handle this state same as if it would be new. Interesting thing > is that second suspending succeeds, but after second resume a > com.ctc.wstx.exc.WstxEOFException: "Unexpected EOF in prolog" is thrown. > However, this does not happen, if step 5 is executed by another thread (see > http://svn.apache.org/repos/asf/cxf/trunk/systests/src/test/java/org/apache >/cxf/systest/http_jetty/continuations/). In this case the service impl gets > a new continuation and all is happy... > > So my questions are: what is the idea beyond it? After succeeded service > submission the client should be forgotten by the server. Why does server > keep that continuation? Is it a Jetty issue? Or did I forgot something? > > Any hints are appreciated! > > Best regards > > Hannes -- Daniel Kulp [email protected] http://www.dankulp.com/blog
