有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java创建服务失败:找不到对象?

我的项目正在app engine上运行。我有一个servlet,每次图像上传到某个bucket时,它都会收到通知。然后我从存储桶中检索图像数据,调整其大小并将其存储到另一个存储桶中。 到目前为止,一切正常。 现在我想使用BlobKey为这个图像创建一个服务url。通过这样做,我通过调用该方法得到了一个错误:

servingUrl = imageService.getServingUrl(ServingUrlOptions.Builder.withBlobKey(bk).secureUrl(true));

java.lang.IllegalArgumentException: OBJECT_NOT_FOUND: 
at com.google.appengine.api.images.ImagesServiceImpl.getServingUrl(ImagesServiceImpl.java:282)
at com.google.training.helloworld.ImageTransformHandler.createServingUrlWithBlobkey(ImageTransformHandler.java:51)
at com.google.training.helloworld.Upload.doPost(Upload.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:37)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
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 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.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:260)
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 com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:78)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:148)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:468)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:256)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:235)
at java.lang.Thread.run(Thread.java:745)

我检查了我所有的论点,它们肯定在那里。你知道这个错误是什么意思吗?我该如何修复它

编辑 我的servlet代码如下所示。如你所见,我将不同的谷歌服务(如gcs)包装在一个处理程序类中

UploadObject object             = new UploadObject(notification);
CloudStorageHandler gcs         = new CloudStorageHandler();
BlobstoreHandler bs             = new BlobstoreHandler();
ImageTransformHandler is        = new ImageTransformHandler();

/**GET DATA FROM GCS**/

byte[] data = gcs.getFileFromGoogleCloudStorage(object.getGcsBucket(), object.getGcsPath());

/******************/

/**TRANSFORMATION**/

byte[] newImageData = is.resizePicture(data, 1200, 1200, "JPEG", 65, 0.5, 0.5);

/******************/

/** STORE NEW RESIZED IMAGE IN GCS BUCKET **/

UploadObject tmp = new UploadObject(object.getGcsPath(), "JPEG", "beispiel", 1200, 1200);
tmp.setData(newImageData);
gcs.saveFileToGoogleCloudStorage(newImageData, "beispiel", object.getGcsPath(), "JPEG", "public-read");

/******************/

/** CREATE SERVING URL **/
//BlobKey bk_neu = bs.createBlobKey("beispiel", object.getGcsPath());
//String servingUrl = is.createServingUrlWithBlobkey(bk_neu);
String servingUrl = is.createServingUrlByName(tmp.getGcsBucket(), tmp.getGcsPath());

...

共 (0) 个答案