2

我在 Google App Engine 上有一个 Java 应用程序,它带有一个从 Google Cloud Storage 加载大图像的 servlet。这段代码确实有效(就像......昨天),但由于某种原因它不再有效,但我没有编辑它!在刷新几次时,它曾经返回了大约一半应该加载的图像,然后停止了。

这是小服务程序:

@SuppressWarnings("serial")
public class SomeServlet extends HttpServlet
{
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException
    {
        BlobstoreService blobstore = BlobstoreServiceFactory.getBlobstoreService();
        String file = req.getParameter("file");
        String folder = req.getParameter("folder");

        BlobKey blobkey = blobstore.createGsBlobKey("/gs/bucket/" + folder + "/" + file + ".jpg");

        blobstore.serve(blobkey, resp);
    }
}

这是日志的内容,没有任何警告/错误/关键标志:

2012-07-26 19:44:54.635 /servlet?folder=SomeFolder&file=SomeFile 200 96ms 0kb Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1 [26/Jul/2012:10: 44:54 -0700]“GET /servlet?folder=SomeFolder&file=SomeFile HTTP/1.1”200 334 -“Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1”“myapp.appspot。 com" ms=97 cpu_ms=103 api_cpu_ms=33 cpm_usd=0.002957 实例=00c61b117cef9993f79be3c568c0cbda0f14

这是http://myapp.appspot.com/servlet?folder=SomeFolder&file=SomeFile显示的内容:

错误:服务器错误 服务器遇到错误,无法完成您的请求。如果问题仍然存在,请报告您的问题并提及此错误消息和导致它的查询。

有任何想法吗?

谢谢!

4

2 回答 2

0

我建议以下内容来找出确切的问题:

  • 在您的 doGet 和 catch 异常处理程序中放置一个 try/catch,记录错误消息或将其写在屏幕上。
于 2012-07-26T18:15:33.170 回答
0

您确定您的应用可以访问您尝试从中提供文件的存储桶吗?您的应用程序中的服务帐户至少需要对您尝试服务的对象具有读取权限。

文件的实际服务发生在您的 servlet 之外,这就是您在日志中看不到任何内容的原因。

于 2012-07-27T07:44:51.793 回答