Committed to 500, java.lang.IllegalStateException: Committed

I use struts2 to export an excel file. A smaller file works fine. I get the following error with a large file. Why am I getting this error? File size too large?

2012-12-01 09:51:29.689::WARN: Committed before 500 Unable to show problem report: java.lang.IllegalStateException: STREAM 2012-12-01 09:51:29.690::WARN: /strutsDemo/process/excel: java.lang.IllegalStateException: Committed at org.mortbay.jetty.Response.resetBuffer(Response.java:853) at org.mortbay.jetty.Response.reset(Response.java:832) at org.mortbay.jetty.Response.sendError(Response.java:220) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:801) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:519) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141) at org.mortbay.jetty.Server.handle(Server.java:269) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339) at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) 2012-12-01 09:51:29.691::WARN: /strutsDemo/file/export java.lang.IllegalStateException: Committed at org.mortbay.jetty.Response.resetBuffer(Response.java:853) at org.mortbay.jetty.Response.reset(Response.java:832) at org.mortbay.jetty.Response.sendError(Response.java:220) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:801) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:519) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141) at org.mortbay.jetty.Server.handle(Server.java:269) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339) at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) 

Here is my action configuration:

  <result name="success" type="stream"> <param name="contentType">application/vnd.ms-excel</param> <param name="inputName">excelStream</param> <param name="contentDisposition">attachment;fileName="${fileName}"</param> <param name="bufferSize">2048</param> </result> <result name="invalid.token">/error.jsp</result> </action> 
+4
source share
1 answer

It looks like your code started writing an Excel file (back to the client), received part of the path and found some kind of error. By then it was too late to return and give an HTTP response code with an error of 500. Details of the error are not included in your question. (Maybe the client hung up, the answer was made twice, the exception was caused by the application code, etc.). If you debug your application and break any exception, do you find anything?

You can also try increasing the size of the buffer to see what happens. (4k, 16k, more?) This tells the system to hold onto the stream longer before starting to return it to the client. Thus, your actual problem may appear on top.

+1
source

All Articles