Java 如何在Google app Engine上获取应用程序的域名
我有一个应用程序在domainX上的Google应用程序引擎上运行。这允许用户输入、存储和显示数据 我也希望这个应用程序在域名上运行。我想使用这两个应用的域名为DataStoreService生成一个密钥,这样数据就不会在这两个域名之间共享 我如何获得域名?我知道我可以使用HttpServletRequest获取我的一个servlet的DoPost方法上的url,但是我如何获取域呢?我还需要在没有HttpServletRequest的RemoteServiceServlet上获取域以获取urlJava 如何在Google app Engine上获取应用程序的域名,java,google-app-engine,Java,Google App Engine,我有一个应用程序在domainX上的Google应用程序引擎上运行。这允许用户输入、存储和显示数据 我也希望这个应用程序在域名上运行。我想使用这两个应用的域名为DataStoreService生成一个密钥,这样数据就不会在这两个域名之间共享 我如何获得域名?我知道我可以使用HttpServletRequest获取我的一个servlet的DoPost方法上的url,但是我如何获取域呢?我还需要在没有HttpServletRequest的RemoteServiceServlet上获取域以获取url
谢谢您可以引入一个映射到
/*
的特殊过滤器,该过滤器将从HTTP请求中获取当前域,并将其存储到请求存储中以供以后重用
我建议使用getServerName()
(它是Host
头),而不是URL
例如:
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
}
类记忆域实现过滤器{
doFilter(ServletRequest请求、ServletResponse响应、FilterChain链){
DomainHolder.getInstance().setDomain(request.getServerName());
链式过滤器(请求、响应);
}
…初始化并销毁
}
类别域名持有人{
//在这里存储域
pricate ThreadLocal domain=new ThreadLocal();
域持有者getInstance(){…sigleton…}
…获取/设置域名
}
使用example.appspot.com
URL或特定于版本的URL(如version.example.appspot.com
)直接访问如何处理?为什么不使用两个不同的应用程序,因为看起来您希望为不同的域使用不同的数据库。