Google app engine 在servlet中调用createNewGSFile()时发生IOException

Google app engine 在servlet中调用createNewGSFile()时发生IOException,google-app-engine,Google App Engine,我在试图向谷歌商店写信时遇到IOException 堆栈跟踪已附加 java.io.IOException 位于com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:601) 在com.google.appengine.api.files.FileServiceImpl.makeSyncCall上(FileServiceImpl.java:574) 在com.google.ap

我在试图向谷歌商店写信时遇到IOException

堆栈跟踪已附加

java.io.IOException 位于com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:601) 在com.google.appengine.api.files.FileServiceImpl.makeSyncCall上(FileServiceImpl.java:574) 在com.google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:481)上 在com.google.appengine.api.files.FileServiceImpl.createNewGSFile(FileServiceImpl.java:151)上 在guestbook.StoreFileServlet.Insert(StoreFileServlet.java:106) 位于guestbook.StoreFileServlet.doPost(StoreFileServlet.java:76) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 位于com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 位于com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:249) 位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 位于org.mortbay.jetty.Server.handle(Server.java:326) 位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 位于org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 位于com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) 位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest上(JettyServletEngineAdapter.java:135) 位于com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:446) 位于com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 位于com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在com.google.tracing.TraceContext$AbstractTraceContextCallback.RunInheritedContextNonRef(TraceContext.java:333)上 在com.google.tracing.TraceContext$AbstractTraceContextCallback.RunInheritedContext(TraceContext.java:325)上 位于com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 位于com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 运行(Thread.java:679) 原因:com.google.apphosting.api.ApiProxy$ApplicationException:ApplicationError:8: 位于java.lang.Thread.getStackTrace(Thread.java:1495) 位于com.google.apphosting.runtime.ApiProxyImpl.dosyncall(ApiProxyImpl.java:237) 位于com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:68) 位于com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:182) 位于com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:180) 位于java.security.AccessController.doPrivileged(本机方法) 位于com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:180) 位于com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:68) 位于com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:101) 位于com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:50) 在com.google.appengine.api.files.FileServiceImpl.makeSyncCall上(FileServiceImpl.java:570) ... 36多 原因:com.google.apphosting.api.ApiProxy$ApplicationException:ApplicationError:8: 在com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.failure上(ApiProxyImpl.java:546) 位于com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:788) 在com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 位于com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在com.google.tracing.TraceContext$AbstractTraceContextCallback.RunInheritedContextNonRef(TraceContext.java:333)上 在com.google.tracing.TraceContext$AbstractTraceContextCallback.RunInheritedContext(TraceContext.java:325)上 位于com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 位于com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:828) 位于com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.failure(RpcStub.java:819) 位于com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:906) 位于com.google.net.rpc3.impl.client.RpcClientInternalContext.finishrpcandtifyapp(RpcClientInternalContext.java:809) 在com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1062) 位于com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:908) 在
    FileService fileService = FileServiceFactory.getFileService();
    GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
      .setBucket("mybucket")
      .setKey(key)
      .setMimeType("text/html")
      .setAcl("public-read")
      .addUserMetadata("myfield1", "my field value");
    try {
        AppEngineFile writableFile = fileService.createNewGSFile(optionsBuilder.build());
        // Open a channel for writing
        boolean lockForWrite = false;
        FileWriteChannel writeChannel = fileService.openWriteChannel(writableFile, lockForWrite);
        PrintWriter out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
        out.println(value);
        out.close();
        writeChannel.closeFinally();
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }