如何在 Google App Engine 的 app.yaml 文件中配置 servlet 过滤器?

Posted

技术标签:

【中文标题】如何在 Google App Engine 的 app.yaml 文件中配置 servlet 过滤器?【英文标题】:How do you configure a servlet filter in Google App Engine's app.yaml file? 【发布时间】:2020-12-28 04:41:26 【问题描述】:

我正在编写一个要部署在 Google App Engine 上的 Kotlin 应用程序。我正在使用 Gradle 插件对 GAE 进行实际部署。一切都运行良好;我成功地将一个 hello-world 应用程序部署到 GAE。

但是,现在我需要添加一个过滤器,特别是 com.googlecode.objectify.ObjectifyFilter。但是一旦我将此过滤器添加到我的 app.yaml 文件中,该应用程序将不再部署。相反,它给了我一个错误,告诉我“过滤器”不是预期的属性。

这是我的 app.yaml 文件:

runtime: java11
handlers:
- url: /*
  filter: com.googlecode.objectify.ObjectifyFilter

这是错误:

> Task :webservice:appengineDeployAll FAILED
ERROR: (gcloud.app.deploy) An error occurred while parsing file: [C:\Users\mathew\Documents\fooApp\webservice\build\staged-app\app.yaml]
Unexpected attribute 'filter' for object of type URLMap.
  in "C:\Users\mathew\Documents\fooApp\webservice\build\staged-app\app.yaml", line 4, column 11

我做错了什么?如何在 GAE 应用中配置过滤器?

【问题讨论】:

【参考方案1】:

您必须在部署描述符文件中指定过滤器类。然后您可以在该过滤器类中设置您的标题。 Here您可以找到有关 App Engine 中过滤器的更多详细信息。

需要记住的是,这些过滤器不适用于您的 css 和 js.files 的静态资源请求。

【讨论】:

那么,过滤器是在web.xml中配置的,而不是在app.yaml中?我需要 app.yaml 和 web.xml? 如果您使用的是 Java,可以。正如您在cloud.google.com/appengine/docs/standard/java/config/webxml 看到的那样,文件用于确定 URL 如何映射到 servlet、哪些 URL 需要身份验证以及其他信息(作为您要使用的过滤器)。在共享链接中,您可以找到有关该文件的更多详细信息 我原以为是其中之一。感谢您的澄清。

以上是关于如何在 Google App Engine 的 app.yaml 文件中配置 servlet 过滤器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google App Engine 上为 BigQuery 设置截止日期

Google App Engine:如何使用相同的父目录创建静态和动态文件?例如dir / css&dir / python?

如何将私有、自托管的 NPM 包与 Google App Engine 节点、标准环境一起使用

如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?

如何将Google App Engine的Java Content-Type设置为UTF-8

如何在 Google App Engine app.yaml 中处理尾部斜线