3

domainX の Google App Engine でアプリを実行しています。これにより、ユーザーはデータを入力し、保存し、表示することができます。

また、このアプリを DomainY で実行したいと考えています。2 つのアプリのドメイン名を使用して DataStoreService のキーを生成し、2 つのドメイン名間でデータが共有されないようにしたいと考えています。

ドメイン名を取得するにはどうすればよいですか? HttpServletRequest を使用して、サーブレットの 1 つの DoPost メソッドで URL を取得できることはわかっていますが、ドメインを取得するにはどうすればよいですか? また、URL を取得するための HttpServletRequest を持たない RemoteServiceServlet でドメインを取得する必要があります。

ありがとう

4

1 に答える 1

3

にマッピングされた特別なフィルタを導入して、/*HTTP リクエストから現在のドメインを取得し、それをリクエスト ストレージに保存して後で再利用できます。

getServerName()URLの代わりに(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
}
于 2013-03-05T10:17:34.930 に答える