Как связать фильтр с сервлетом в app.yaml для Google App Engine?
Для своего приложения для ядра приложения я хочу назначить сервлет для шаблона URL, но также настроить фильтр Objectify, как описано здесь: https://code.google.com/p/objectify-appengine/wiki/Setup.
В моем app.yaml у меня есть
handlers:
- url: /v1/*
name: v1
servlet: org.restlet.ext.servlet.ServerServlet
...etc...
который просто перенаправляет запросы к моему сервлету, но я не могу понять, как организовать фильтр Objectify для тех же запросов, которые обрабатывает сервлет.
Документы GAE гласят: "Фильтр - это класс, который действует на запрос как сервлет, но может позволить продолжить обработку запроса с другими фильтрами или сервлетами".
Хорошо, хорошо, это то, что я хочу. Но в документах также говорится: "Одно отображение URL может включать в себя либо фильтр, либо сервлет, но не оба".
Итак... как мне это сделать?
1 ответ
Фильтры запускаются перед сервлетами и не являются эксклюзивными. Обычно для запроса запускаются все фильтры, а затем выбирается и выполняется один сервлет для данного URL.
Создайте новый раздел фильтра в вашем yaml:
handlers:
- url: /v1/*
name: v1
servlet: org.restlet.ext.servlet.ServerServlet
- url: /*
name: ObjectifyFilter
filter: com.googlecode.objectify.ObjectifyFilter
Примечание: лучше всего запускать ObjectifyFilter для всех запросов (url: /*
) просто чтобы быть уверенным, что objectify всегда инициализируется.