GAE 后端实例调用和 Spring 集成

Posted

技术标签:

【中文标题】GAE 后端实例调用和 Spring 集成【英文标题】:GAE Backend instance invocation and Spring integration 【发布时间】:2013-01-21 21:32:43 【问题描述】:

谷歌应用引擎文档说:

后端与您的主应用程序版本共享 web.xml 中定义的一组 servlet

我们在我们的谷歌引擎应用程序中使用 Spring Framework,因此我们在 web.xml 中仅定义 spring dispatcherServlet 我的期望是具有单独 url 的 Spring servlet 可以作为“后端实例”触发。但是我不知道如何在给定的“子域”上定义 spring servlet 的 url。

我正在尝试使用队列任务“doStuffQueue”调用后端“myBackendId”:

Queue queue = QueueFactory.getQueue("doStuffQueue");
TaskOptions taskOptions = TaskOptions.Builder.withUrl("/doTask/")
             .param("someParam", someParam)
             .header("Host", BackendServiceFactory.getBackendService().getBackendAddress("myBackendId"))
             .method(Method.POST);
   queue.add(taskOptions);

但上面的 TaskOption 将其作为标准前端实例运行,因为子域被忽略,所以这个 url 被调用:

 myAppId.appspot.com/doTask

作为解决方法,我尝试像这样定义 TaskOption:

 TaskOptions.Builder.withUrl("myBackendId.myAppId.appspot.com/doTask")

但这在架构中是不允许的,因为 url 必须以 /

开头

【问题讨论】:

【参考方案1】:

您的代码是正确的,我想您可能在注释定义中遇到问题。

确保您使用的是 RequestMethod.POST。另外,我相信您可能必须使用“/task/doTask”来启动任务 url,例如:

@RequestMapping(value = "/task/doTask", method = RequestMethod.POST )

【讨论】:

以上是关于GAE 后端实例调用和 Spring 集成的主要内容,如果未能解决你的问题,请参考以下文章

运行一个 Google App Engine 实例,前端在 nodejs 中,后端服务器在 python 中

GAE 必须先调用 set*BlobStorage() 之一

Spring实战笔记:后端中的Spring

是否可以将 GCM 与 python GAE 后端一起使用?

不使用 API Gateway 代理集成无法调用后端服务

spring学习笔记(19)mysql读写分离后端AOP控制实例