Note that there are some explanatory texts on larger screens.

plurals
  1. POGAE Blobstore IllegalStateException: NO CONTENT
    primarykey
    data
    text
    <p>When attempting to serve a file from the blobstore via BlobstoreService.serve(key, res), I get the following error:</p> <pre><code>WARNING: /path/to/servlet java.lang.IllegalStateException: NO CONTENT at org.mortbay.jetty.HttpGenerator.addContent(HttpGenerator.java:106) at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:644) at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:579) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.copy(ServeBlobFilter.java:129) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.serveBlob(ServeBlobFilter.java:185) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:64) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:370) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) </code></pre> <p>If I attempt to download from this URL using a browser, the browser stores a file of size 0 bytes. I am testing this on the dev server from SDK 1.7.1. </p> <p>I am using Jersey to create the REST API, which seems to be causing the problem. If I create a regular servlet, it serves the file properly. I wonder whether this is an issue with using the @GET annotation, which requires that the function return something. However, if I return anything, the blobstore complains and tells me that it has been preempted by data that has already been sent.</p> <p>The service doesn't even seem to be sending any headers back in response to a request.</p> <p>Here is the code that is supposed to send the response:</p> <pre><code>@GET public void getAirport(@PathParam(APIUtils.VERSION_NAME) String versionName, @Context HttpServletResponse res) throws IOException { BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); DataDAO dao = new DataDAO(); BlobKey key = dao.getAirportBlobKey(versionName); if(key == null) { res.sendError(HttpServletResponse.SC_NOT_FOUND, "No airport record found for: " + versionName); } else { blobstoreService.serve(key, res); } } </code></pre> <p>Any ideas?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload