yohjizzz's Blog

I'm a Programmer.

DWR (1.1.1) メモ

DWR からコールされる POJO にて、サーブレットAPI(リクエストやレスポンスなど)を取得する方法…

import uk.ltd.getahead.dwr.WebContext;
import uk.ltd.getahead.dwr.WebContextFactory;
 ・
 ・
    WebContext webContext = WebContextFactory.get();
    
    // HttpServletRequest を取得する…
    HttpServletRequest request = webContext.getHttpServletRequest();
    
    // HttpServletResponse を取得する…
    HttpServletResponse response = webContext.getHttpServletResponse();
    
    // HttpSession を取得する…
    HttpSession session = webContext.getSession();
    
    // ServletContext を取得する…
    ServletContext servletContext = webContext.getServletContext();

DWRは、上記のオブジェクト WebContext をスレッドローカル変数に入れているみたい。
この辺の処理を担当しているのは WebContextBuilder の実装クラス uk.ltd.getahead.dwr.impl.DefaultWebContextBuilder


≪おまけ≫
全然関係ないけど、Axis もこんな↑感じでサービス POJO からサーブレットにアクセスできる。

import org.apache.axis.MessageContext;
import org.apache.axis.transport.http.HTTPConstants;
 ・
 ・
    MessageContext messageContext = MessageContext.getCurrentContext();
    HttpServlet servlet =
        (HttpServlet)messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLET);


ちなみに DWR 2.0 RC 2 がリリースされていた。
パッケージが uk.ltd.getahead.dwr から org.directwebremoting に変更されるみたい。