为啥实时 AppEngine 没有调用我的 servlet 过滤器?

Posted

技术标签:

【中文标题】为啥实时 AppEngine 没有调用我的 servlet 过滤器?【英文标题】:Why live AppEngine is not calling my servlet filter?为什么实时 AppEngine 没有调用我的 servlet 过滤器? 【发布时间】:2016-06-16 12:16:17 【问题描述】:

我为我的应用引擎项目编写了一个 servlet 过滤器。

它是从本地开发机器调用的。

但是当我将代码放入 Google App Engine 实时服务器时,它没有被调用。

谁能解释一下原因?

这是在 web.xml 中的映射方式

  <filter>
    <filter-name>ErrorHandlerFilter</filter-name>
    <filter-class>com.fms.advocacy.filters.ErrorHandlerFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>ErrorHandlerFilter</filter-name>
    <url-pattern>/_ah/api/*</url-pattern>
  </filter-mapping>

这就是过滤器。

public class ErrorHandlerFilter implements Filter 
    private static final Logger log = Logger.getLogger(ErrorHandlerFilter.class.getName());

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException  
            log.warning("Entered ErrorHandlerFilter!!"); 
    

PS:我正在使用 Google Cloud Endpoint 对我的 API 进行编码

【问题讨论】:

你的 servlet 过滤器是如何映射的? 是的。我配置了 web.xml。它在我的本地开发服务器中运行,但不在实时 AppEngine 服务器中。 我问的是 如何,而不是 web.xml 中的情况。 对不起。我会更新它。 更新了有问题的 web.xml 部分 【参考方案1】:

问题在于&lt;url-pattern&gt;/_ah/api/*&lt;/url-pattern&gt;。 在服务器中,url 更改为&lt;url-pattern&gt;/_ah/spi/*&lt;/url-pattern&gt;

现在它正在工作。

【讨论】:

以上是关于为啥实时 AppEngine 没有调用我的 servlet 过滤器?的主要内容,如果未能解决你的问题,请参考以下文章

为啥近实时调用火花流?

为啥google appengine部署需要几分钟才能更新服务

为啥我的数据没有在 Flutter for web 中使用 api 从实时数据库中检索

如何在 Google AppEngine 上实现“实时”消息传递?

web端调用高德地图为啥搜不到地址

Laravel 7:为啥我的会话 cookie 没有在浏览器中设置?