【问题标题】:custom servlet filter google endpoint自定义 servlet 过滤器谷歌端点
【发布时间】:2013-12-17 15:22:54
【问题描述】:

我尝试调用我的过滤器,但它似乎被忽略了。所以我有两个问题: 1. 带有 google 端点的 servlet 过滤器的配置如何? 2. 使用 slf4j 进行日志记录(jdk 日志作为后端)应该可以在过滤器类中正常工作 - 我猜?

web.xml 中的配置:

<filter>
    <filter-name>ObjectifyFilter</filter-name>
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ObjectifyFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>myCoolFilter</filter-name>
    <filter-class>com.example.MyCoolFilterClass</filter-class>
</filter>
<filter-mapping>
    <filter-name>myCoolFilter</filter-name>
    <url-pattern>/_ah/spi/endpoint-api-name/*</url-pattern>
</filter-mapping>

<servlet>
    <servlet-name>ServiceServlce</servlet-name>
    <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
    <init-param>
        <param-name>services</param-name>
        <param-value>com.example.MyCoolEndpoint</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>ServiceServlce</servlet-name>
    <url-pattern>/_ah/spi/endpoint-api-name/*</url-pattern>
</servlet-mapping>

【问题讨论】:

    标签: java google-app-engine jakarta-ee


    【解决方案1】:

    我找到的唯一解决方案是将过滤器添加为通用过滤器 (/*​​) 并处理检查请求 URI:

    HttpServletRequest httpRequest = (HttpServletRequest) req;
    String requestURI = httpRequest.getRequestURI();
    log.info("request uri " + requestURI);
    if (!requestURI.toLowerCase().contains("endpoint-api-name")) {
      chain.doFilter(req, resp);
      return;
    }
    

    值得注意的是,我还尝试在过滤器声明中使用 servlet-name - 没有结果。我让过滤器工作的唯一方法是通过 /* url-pattern。

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      相关资源
      最近更新 更多