ASP.NETを利用していると
static HttpContext HttpContext.Current からリクエスト情報を取得して
IPADDRESS等の情報をどこででも取得することができます
似たような意識でJavaで実装していると
どうしてもHttpServletRequestの取得でつまずいてしまいます。
そこで、スレッド毎に値を保持するThreadLocalを利用して
HttpServletRequest をスレッド内で参照できるようにします
private final static ThreadLocal<HttpServletRequest> servletRequests = new ThreadLocal<HttpServletRequest>();
public static void setServletRequest(HttpServletRequest request) {
servletRequests.set(request);
}
public static HttpServletRequest getServletRequest() {
return servletRequests.get();
}
もちろん非同期な実装では参照できなくなる(かな?)
リクエスト初期化時にセットする必要があります。
リクエスト終了後はガベージコレクション対象になります。
0 件のコメント:
コメントを投稿