2013-03-05 82 views
3

我有一個應用程序在domainX上的Google App Engine上運行。這允許用戶輸入數據,存儲並顯示數據。如何獲取Google App Engine上的應用程序域名

我也希望這個應用程序在DomainY上運行。我想使用2個應用程序的域名爲DataStoreService生成一個密鑰,以便在這兩個域名之間不共享數據。

如何獲取域名?我知道我可以使用HttpServletRequest獲取我的一個servlet的DoPost方法的url,但是如何獲取域?我還需要獲取沒有HttpServletRequest的RemoteServiceServlet上的域來獲取url。

感謝

+0

什麼用'example.appspot.com' URL或特定版本的像直接訪問'version.example.appspot.com',應如何處理?爲什麼不能有兩個不同的應用程序,因爲它看起來像你想爲不同的域有不同的數據庫。 – Lipis 2013-03-05 13:35:51

回答

3

可以引入一個特殊的過濾器,映射到/*,將得到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 
} 
相關問題