【发布时间】:2017-01-13 21:11:56
【问题描述】:
我正在使用带有 java 的 Google AppEngine。 我已通过在 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 模式,过滤器将起作用,但这不是我的要求。如果没有手动缩放,它可以按预期工作。
谁能告诉我为什么我不能用它?
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 {
}
}
【问题讨论】:
-
你能添加你想要挂钩的servlet映射吗?您是在开发环境还是生产环境中尝试?
-
没有 servlet,只有过滤器。我添加了映射。我使用术语“servlet 过滤器”来避免与其他人混淆。我在开发环境中。
-
但是过滤器需要hook哪个服务呢?你配置的 url-pattern 是和一个 http 端点相关的,那么它的声明在哪里呢?
-
我用过滤器的源代码更新了问题。 @DevilingMaster 这就是你所说的声明吗? /_ah/api/* 是 API 的 Google Cloud Endpoint 网址
标签: java google-app-engine servlet-filters