Google app engine 如何将过滤器与Google app Engine的app.yaml中的servlet关联?

Google app engine 如何将过滤器与Google app Engine的app.yaml中的servlet关联?,google-app-engine,servlets,servlet-filters,objectify,app.yaml,Google App Engine,Servlets,Servlet Filters,Objectify,App.yaml,对于我的应用程序引擎应用程序,我想为url模式分配一个servlet,但还要设置Objectify筛选器,如下所述: 在我的app.yaml中,我有 handlers: - url: /v1/* name: v1 servlet: org.restlet.ext.servlet.ServerServlet ...etc... 这可以将请求路由到我的servlet,但是我不知道如何安排Objectify过滤器在servlet正在处理的相同请求上运行 比如“过滤器是一个

对于我的应用程序引擎应用程序,我想为url模式分配一个servlet,但还要设置Objectify筛选器,如下所述:

在我的app.yaml中,我有

handlers:
  - url: /v1/*
    name: v1
    servlet: org.restlet.ext.servlet.ServerServlet
    ...etc...
这可以将请求路由到我的servlet,但是我不知道如何安排Objectify过滤器在servlet正在处理的相同请求上运行

比如“过滤器是一个类,它对请求起作用,就像servlet一样,但可能允许通过其他过滤器或servlet继续处理请求。”

好的,很好,这就是我想要的。但是文档中也提到“一个URL映射可以包含一个过滤器或servlet,但不能同时包含两者。”


所以。。。如何做到这一点?

过滤器在servlet之前运行,它们不是独占的。通常,对于一个请求,所有过滤器都会运行,然后为给定的Url选择并执行一个servlet

在yaml中创建新的筛选器部分:

handlers:
  - url: /v1/*
    name: v1
    servlet: org.restlet.ext.servlet.ServerServlet
  - url: /*    
    name: ObjectifyFilter
    filter: com.googlecode.objectify.ObjectifyFilter

注意:最好让ObjectifyFilter在所有请求上运行(url:
/*
),以确保objectify始终是初始化的。

因此,基本上如果我使用app.yaml,我需要设置一个人工层次结构,将servlet映射的url放在筛选器映射的url下面?在我的例子中,唯一将使用Objectify的请求是映射到restleservlet的请求。或者我想我可以回头使用web.xml,它支持将过滤器映射到servlet。(编辑示例yaml)不,这是简单的。只需创建一个新的url部分,并将其映射到筛选器。获得它,谢谢。对于那些想知道的人,可以为servlet和过滤器指定相同的url模式(例如,将Peter答案中的第二个url模式更改为“-url/v1/*”)