Servlet过滤器无法使用AppEngine手动缩放

时间:2016-09-06 11:59:05

标签: java google-app-engine servlet-filters

我正在使用Google AppEngine和java。 我已通过在appengine-web.xml

中添加以下内容来配置手动扩展
<manual-scaling>
    <instances>1</instances>
</manual-scaling>

但是在我添加之后,我无法在web.xml中使用带有以下映射的servlet过滤器。

<filter>
    <filter-name>testFilter</filter-name>
    <filter-class>com.fms.test.TestFilter</filter-class> 
</filter>
<filter-mapping>
    <filter-name>testFilter</filter-name>
    <url-pattern>/_ah/api/*</url-pattern>  
    <url-pattern>/_ah/spi/*</url-pattern>  
</filter-mapping>

如果我将*作为url-pattern,过滤器将起作用,但这不是我的要求。如果没有手动缩放,它将按预期工作。

有人可以告诉我为什么我不能使用它吗?

PS:我在开发环境中并使用AppEngine SDK版本1.9.42

这是我的过滤器代码:

public class TestFilter implements Filter { 
    private static final AdvocacyUtils utils = AdvocacyUtils.getInstance();

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("Request filtered.");
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException { 
    }
}

1 个答案:

答案 0 :(得分:1)

我找到了一些解决方法(here) 解决方案是添加到&#34;过滤器映射&#34; aditional section - &#34; dispatcher&#34;就像在这个片段中一样:

<filter-mapping>
    <filter-name>ObjectifyFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>