将servlet架构转换为app-engine端点架构

时间:2013-04-27 23:21:02

标签: java google-app-engine servlets blobstore google-cloud-endpoints

以下转换是否适用于从Java servlet转换为Google app-engine云端点?

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException { … }

@ApiMethod(name = "save_blob_key", path = "save_blob_key" httpMethod = HttpMethod.POST)
public void saveBlobKey(HttpServletRequest req) throws IOException { … }

背景:

我正在尝试使用端点来处理blobstore回调。

参考:https://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App

问题:

这里的重大提示是以下两行似乎需要类HttpServletRequest,我不知道是否可以将它传递给端点。

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req);

编辑:

我一直在尝试很多路线来解决这个问题。我的最新信息是combining blob servlet with endpoint api。我仍然无法使代码工作。因此,赏金给任何提供解决方案的人或实际导致解决方案的信息。

1 个答案:

答案 0 :(得分:3)

您目前无法使用端点作为blobstore blobstoreService.createUploadUrl的回调。见related answer。有一个支持mediaUpload的开放功能请求,可能会提供与您想要的功能类似的功能。随意给它加星标以显示支持并获得自动更新。

根据您尝试上传的数据量,我建议使用两种可能的替代方案之一。

如果要上传少量适合数据存储区的blob数据,请在端点中使用ShortBlob(最多500个字节)或Blob(最多1 MB)类型实体类。端点将处理后端的序列化,并通过客户端库期望(并发回)base64编码的字符串。这是一种非常简单,直接的方法。

如果要提供大于1 MB的blob,请立即使用Google Cloud Storage JSON API。此API使用与端点相同的客户端库,因此您不必担心将另一个库与应用程序捆绑在一起。 This page有一个使用Java客户端库将blob插入Google云端存储的示例。