Как настроить фильтр сервлетов в файле app.yaml Google App Engine?

#java #spring-boot #google-app-engine #servlet-filters #objectify

#java — язык #весенняя загрузка #google-app-engine #servlet-фильтры #объективировать #java

Вопрос:

Я пишу приложение Kotlin для развертывания в Google App Engine. Я использую плагин Gradle для фактического развертывания в GAE. Все работало нормально; я успешно развернул приложение hello-world в GAE.

Однако теперь мне нужно добавить Фильтр, в частности com.googlecode.objectify.ObjectifyFilter . Но как только я добавлю этот фильтр в свой файл app.yaml, приложение больше не будет развертываться. Вместо этого он выдает мне сообщение об ошибке, сообщающее, что «filter» не был ожидаемым атрибутом.

Вот мой файл 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:UsersmathewDocumentsfooAppwebservicebuildstaged-appapp.yaml]
Unexpected attribute 'filter' for object of type URLMap.
  in "C:UsersmathewDocumentsfooAppwebservicebuildstaged-appapp.yaml", line 4, column 11
  

Что я делаю не так? Как мне настроить фильтр в приложении GAE?

Ответ №1:

Вы должны указать класс фильтра в файле дескриптора развертывания. Затем вы можете установить свои заголовки внутри этого класса фильтра. Здесь вы можете найти более подробную информацию о фильтрах в App Engine.

Следует иметь в виду, что эти фильтры не работают для запросов статических ресурсов для ваших css и js.files.

Комментарии:

1. Итак, фильтры настроены в web.xml , не в app.yaml? Мне нужны оба app.yaml и web.xml ?

2. Если вы используете Java, да. Как вы можете видеть здесь cloud.google.com/appengine/docs/standard/java/config/webxml эти файлы используются для определения того, как URL-адреса отображаются на сервлеты, какие URL-адреса требуют аутентификации и другой информации (в качестве фильтров, которые вы хотите использовать). В общей ссылке вы можете найти более подробную информацию об этом файле

3. Я думал, что это одно или другое. Спасибо за разъяснение.