I found it - there wasn't a status code being set, so we were calling response.setStatus(0), which caused jetty all sorts of problems because it uses the status field to denote that the connection was reset or something like that.

Anyway, fixed in SVN and Greg is going to throw an IllegalArgumentException in Jetty if 0 is passed in from now on.

- Dan

Dan Diephouse wrote:
Its not close()ing actually. The underlying XMLStreamWriter flushes once endDocument() is called. flush() is only ever called once too. I'm not sure why thats causing Jetty to freak out. *sigh*

Googling turned up this, but I'm not sure its really helping me - http://jira.codehaus.org/browse/JETTY-276

- Dan

James M Snell wrote:
It's possible but then I'd expect the error to be thrown higher up in
the method.  For some reason, the underlying writer appears to be
closing before the method completes.  Any chance you can do some
debugging on that internal writer to see what's going on with it?

- James

Dan Diephouse wrote:
Any chance the document is being written twice somehow? Thats what the
exception seems to imply to me, but I could be way off.

Dan Diephouse wrote:
Its the code inside AbstractServiceProvider.getServicesDocument()
(formerly known as AbstractWorkspaceProvider).

James M Snell wrote:
Odd. Can you provide some of the code you're using the write out the
document?

- James

Dan Diephouse wrote:
I'm getting the following exception in my app when printing out a
services document now. I haven't been able to reproduce in any of the
Abdera test cases I've written though. Any ideas?

- Dan

java.lang.RuntimeException: com.ctc.wstx.exc.WstxIOException: null
   at
org.apache.abdera.parser.stax.StaxStreamWriter.endDocument(StaxStreamWriter.java:117)


   at
org.apache.abdera.protocol.server.impl.AbstractServiceProvider$1.writeTo(AbstractServiceProvider.java:184)


   at
org.apache.abdera.protocol.server.impl.StreamWriterResponseContext.writeEntity(StreamWriterResponseContext.java:94)


   at
org.apache.abdera.protocol.server.impl.SimpleResponseContext.writeTo(SimpleResponseContext.java:67)


   at
org.apache.abdera.protocol.server.impl.SimpleResponseContext.writeTo(SimpleResponseContext.java:60)


   at
org.apache.abdera.protocol.server.impl.DefaultRequestHandler.response(DefaultRequestHandler.java:133)


   at
org.apache.abdera.protocol.server.impl.DefaultRequestHandler.process(DefaultRequestHandler.java:61)


   at
org.apache.abdera.protocol.server.servlet.AbderaServlet.service(AbderaServlet.java:100)


   at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
   at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
   at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)


   at
org.springmodules.jcr.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:93)


   at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)


   at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)


   at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)


   at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.ui.switchuser.SwitchUserProcessingFilter.doFilter(SwitchUserProcessingFilter.java:341)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)

   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)


   at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)


   at
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)

   at
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)


   at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)


   at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)

   at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

   at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

   at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)

   at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
   at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)

   at org.mortbay.jetty.Server.handle(Server.java:313)
   at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
   at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)


   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
   at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)


   at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)


Caused by: com.ctc.wstx.exc.WstxIOException: null
   at
com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1687)

   at
com.ctc.wstx.sw.BaseStreamWriter.writeEndDocument(BaseStreamWriter.java:585)


   at
org.apache.abdera.parser.stax.StaxStreamWriter.endDocument(StaxStreamWriter.java:114)


   ... 52 more
Caused by: org.mortbay.jetty.EofException
   at
org.mortbay.jetty.HttpGenerator.completeHeader(HttpGenerator.java:253)
   at
org.mortbay.jetty.HttpConnection.commitResponse(HttpConnection.java:581)

   at
org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:906)
   at
sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:410)
   at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
   at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
   at
com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
   at
com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:194)
   at
com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1685)

   ... 54 more
[12-12 15:57:41] INFO  / [main]: Destroying





--
Dan Diephouse
MuleSource
http://mulesource.com | http://netzooid.com/blog

Reply via email to