问题标签 [app-engine-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
570 浏览

java - 在本地开发服务器上为非默认模块选择特定端口

在我的 build.gradle 文件中,我为我的非默认 (module2) AppEngine gradle 模块使用以下配置:

但是,当我运行“Google AppEngine 配置”时,模块仍然在some_random_port而不是 8081 上启动。我想修复运行这些端口的端口,因此当我在本地开发中运行测试请求时可以依赖这些端口服务器。

我究竟做错了什么?或者这只是不支持?

==================================================== ==================== Appengine模块结构:

应用引擎版本:1.9.22

Gradle Appengine 插件版本:1.9.21

编辑

我还尝试在其自己的“Appengine 运行配置”中运行每个模块,虽然这些模块确实在各自的端口中运行,但我无法再在它们之间进行通信。尝试从默认模块上的 servlet 安排 module2 上的任务会出现以下错误:

0 投票
0 回答
143 浏览

java - Google App Engine 模块 + iOS 推送通知的任务队列

我按照此示例中的说明进行操作,但没有成功。frontend添加到拉队列的任务,notification-delivery但 iOS 客户端没有收到任何推送通知。似乎worker没有完成它的工作。我不知道是否worker自动扫描拉取队列并发送推送(使用 Javapns)。而且我不知道如何检查是否处理了拉取队列中的任务。

我做了什么:

  1. 为 GAE 项目启用计费。
  2. 按照示例中的说明进行操作(编辑常量,添加 p12 证书)。
  3. mvn clean install从根目录。
  4. mvn clean package从根目录。
  5. mvn appengine:updatecloudpush-ear目录。
  6. 通过在独立的 Java 类中编写一些代码来确保 Javapns 与提供的 p12 文件一起使用,它确实向 iOS 客户端发送了推送通知。
  7. 当我PushNotificationWorkerServlet通过从浏览器请求调用时/_ah/start,它会抛出一个错误,说This feature is only available to backend instances.所以我尝试使用ThreadManager.createThreadForCurrentRequest而不是ThreadManager.createBackgroundThread。错误消失了,但什么也没发生。

我认为带有任务队列的 GAE 是可扩展移动应用程序的完美解决方案,所以我会坚持下去。

请问有什么帮助吗?谢谢你。

参考: https ://cloud.google.com/solutions/mobile/ios-push-notifications/

0 投票
1 回答
68 浏览

google-app-engine - 将 App Engine 前端版本转换为模块

我稍微“滥用”了 App Engine (java) 中的前端“版本”概念,以便在引入模块之前实现它们。我的配置包括:module1-dot-myapp.appspot.com、module2-dot-myapp.appspot.com、module3-dot-myapp.appspot.com 等,基于版本概念(更常用于数字:1-dot-myapp 等)。

具体来说,所有版本的代码都是相同的,但每个版本实际上用于不同的目的。这种分离允许不同的客户端使用不同的 api 版本,单独的部署计划,暂存版本,日志分离等。

我的问题是,在这些条件下,将我的应用程序转换为“真实”模块的最佳方式是什么?这样“module1”是一个实际的模块(仍然映射到相同的 url - module1-dot-appspot.com)?

0 投票
3 回答
1089 浏览

java - 将简单的 AppEngine Java 项目转换为使用模块

这个问题类似于这个问题但这并没有解决我的问题。

我有一个非常简单的 Google AppEngine / Java 应用程序。它自 2011 年以来一直在运行,并且不使用 maven 或其他我认为不需要的花哨的东西。最近,我向此应用程序添加了 Cloud Endpoints。我没有使用 generated endpoint-libs,因为我似乎不需要它,没有它一切正常。

该应用程序有一个前端和一个后端已经有一段时间了。我现在正在尝试将这些转换为模块:前端将成为默认模块,后端将成为另一个模块。

我的旧项目的结构是这样的:

我通过为 Java 类提供正确的注释来实现云端点。没有花哨的 Maven 产生魔法。

我知道我需要为每个模块创建一个目录,如下所示:

我的问题是:

  • 我应该把src目录放在哪里?
  • 我应该在中声明我的云端点类default/WEB-INF/web.xml吗?
  • 每个模块可以有自己的WEB-INF/cron.xml吗?

如果看起来我不知道自己在做什么,那可能是对的,但我不想将所有内容都放在 maven pom 文件中,编写 gradle 脚本等,而是专注于实际应用程序。这可能是因为我在 vi 和 emacs 的陪伴下长大,那时我们自己编写代码。;)

更新:

我将 src 目录与和project放在同一级别下。编译后的 Java 类出现在 下,这表明我做对了。GAE 在 中生成一个文件,我以前在不使用模块时没有看到该文件。defaultmoduledefault/WEB-INF/classes*.apidefault/WEB-INF

在本地,我可以看到我的云端点 API,并且可以使用它们。当我部署到 AppEngine 并尝试使用 API 资源管理器时,出现异常:

/_ah/spi/BackendService.getApiConfigs java.lang.NullPointerException at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:100) at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet .java:71) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

等等……

我确实添加了 OAuth2 凭据并将它们设置在我的云端点配置中。我找不到 的代码SystemServiceServlet,但我猜它找不到我的 API 类(在 中配置default/WEB-INF/web.xml)。

另一个更新:

我了解到 AppEngine 模块需要企业归档 (ear) 结构,并且像简单的 GAE 应用程序那样进行部署是行不通的。没有“一键式”部署。我按照使用 Java 编程 Google App Engine中的说明进行操作,最终得到了一堆 Eclipse 项目。它相当企业化,但我可以让它抛出与我之前部署的简单版本相同的异常。我想知道我是否取得了任何进展。

0 投票
1 回答
384 浏览

google-app-engine - appengine 更安全的 dispatch.yaml 路由到模块/服务

这是一个基本的意义检查问题,因为我正在部署一些新模块:

调度.yaml:

"*.com/mobile/*"用 put代替 不是更安全"*/mobile/*"吗?万一其他模块可以/mobile/在其网址中使用并意外路由到mobile-frontend

如果我的域名不是.comeg.io怎么办?

0 投票
2 回答
573 浏览

java - 如何在 Google App Engine 中使用模块并使用任务队列(Java)向它们添加目标?

我的任务超过了任务队列的 10 分钟期限。通过不同的文档,我发现使用模块我可以运行一个实例来处理长时间运行的任务,但最好甚至应该使用任务队列来完成。我曾经使用过后端,但它们已被弃用。

我的问题是如何将模块引入我现有的 App Engine 项目以及如何使用它们来运行长时间运行的任务?

以下是一段代码:

我必须在上述代码中进行哪些更改才能使用模块添加长时间运行的任务?[“submitworker”是一个 servlet,它是实际长时间运行的任务]

我已经引用了这个链接,但我无法绕过第三步:
3. 将服务声明元素添加到 appengine-application.xml 文件。

另外,即使我成功地将一个模块添加到我的项目中,我如何使用任务队列来定位这个模块?

我已经解决了这个问题,但它是一个 python 实现,我的实现是用 Java 实现的。

我正在寻找有关如何在模块中使用“目标”以及如何在添加到任务队列时使用它的逐步过程。

即使我将长时间运行的模块目标添加到任务队列中,它仍然会在 10 分钟后终止执行,还是即使任务队列中的任务到期,它也会完成任务?

请建议。

0 投票
1 回答
92 浏览

java - 如何从 Google App Engine 应用程序的后端模块注册任务队列

我正在开发具有多个模块的 Google App Engine(1.9.34) 应用程序。

在这里,我可以从默认模块注册队列(使用 queue.xml)。但我想从后端模块注册队列。

我已经放入queue.xmlBackendModule/war/WEB-INF/queue.xml所需的配置,例如:

Task Queues但此队列在云管理控制台菜单中不可见。

我是否缺少任何配置?

0 投票
2 回答
657 浏览

python - 我们可以在微服务应用引擎标准环境之间使用服务帐户进行身份验证吗?

我正在谷歌应用引擎标准环境中实现微服务。我需要使用 URLfetch 从另一个微服务调用一个微服务。为此,我必须有一些身份验证机制,以便只有同一个项目中的微服务才能调用这个 api。

它可以使用任务队列来实现,但这对我的场景没有用。

我点击了这个链接(How to secure connection between different GAEs?),如果我们验证 X-Appengine-Inbound-Appid 标头,那么可以实现。我很好奇我们是否使用服务帐户使其更加安全。

下面的链接有参考做它https://cloud.google.com/appengine/docs/standard/python/communicating-between-services https://cloud.google.com/docs/authentication/production

但没有找到实现它的明确说明。有人在使用这种方法进行身份验证吗?