使用web.xml进行AppEngine域重定向

时间:2014-06-30 21:33:08

标签: java google-app-engine

我想拦截所有传入的请求,例如

http://subdomain.domain.org/path/to/resource

https://appengineid.appspot.com/path/to/resource

任何可能的/ path / to / resource

这可以通过app engine web.xml部署描述符实现吗? 当我搜索这个主题时,所有文档或问题/答案都涉及转换/翻译请求的/ path / to / resource部分而不是subdomain.domain.tld部分?

由于

问题编辑/更新:

以上两个网址都指向应用引擎应用的完全相同的实例。我不想在/ path / to / resource上进行URL模式匹配,因为这样会匹配"匹配"对两个网址的请求。我想在URL的域部分进行URL模式匹配,以便将对subdomain.domain.org的任何请求重定向到appengineid.appspot.com,然后,这样就不会遇到任何循环请求appengineid.appspot.com被重定向过滤器忽略,并由Web部署描述符的其余部分处理。

1 个答案:

答案 0 :(得分:0)

似乎是过滤器可以解决您的问题。 您可以在web.xml中创建一个新过滤器,如下所示:

     <filter> 
         <filter-name>yourFilterName</filter-name>
         <filter-class>com.acme.filter.YourNewFilter</filter-class> 
     </filter> 
     <filter-mapping> 
         <filter-name>yourFilterName</filter-name>
         <url-pattern>/path/to/resource/*</url-pattern> 
      </filter-mapping>

您的过滤器类将是这样的:

public class YourNewFilter extends MyGenericFilter implements Filter {

  public void doFilter(final ServletRequest request,
                       final ServletResponse response,
                       FilterChain chain)
       throws java.io.IOException, javax.servlet.ServletException  { 
      ServletContext context= getServletContext();
      req.getRequestURL().toString() // use this method to get the end of the URL
      RequestDispatcher rd= context.getRequestDispatcher("https://appengineid.appspot.com/path/to/resource/" + end of the URL
     );
      rd.forward(request, response);

  } 
} 

它会截取一个域中的所有请求并将其发送给另一个域。