如何在Google App Engine上获取应用的域名

时间:2013-03-05 09:53:59

标签: java google-app-engine

我在domainX上的Google App Engine上运行了一个应用。这允许用户输入数据,存储数据并显示它。

我也希望这个应用程序在DomainY上运行。我想使用2个应用程序的域名为DataStoreService生成密钥,以便不在2个域名之间共享数据。

如何获取域名?我知道我可以使用HttpServletRequest获取我的一个servlet的DoPost方法的url,但是如何获取域?我还需要在RemoteServiceServlet上获取域,该域没有HttpServletRequest来获取URL。

由于

1 个答案:

答案 0 :(得分:3)

您可以引入一个映射到/*的特殊过滤器,它将从HTTP请求中获取当前域,并将其存储到请求存储中以便以后重用。

我建议使用getServerName()Host标题),而不是网址。

例如:

class RememberDomain implements Filter {
  doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {  
    DomainHolder.getInstance().setDomain(request.getServerName());    
    chain.doFilter(request, response);
  }
  ... init and destroy
}


class DomainHolder {

  //store domain here
  pricate ThreadLocal<String> domain = new ThreadLocal<String>(); 

  DomainHolder getInstance() { ... sigleton ... }

  ... get/set domain name
}