1

重複の可能性:
サーブレットにServletRequestとResponseを格納するためのThreadLocal:何のために?

後でいくつかのビジネスサービスメソッドを呼び出すいくつかのDelegatorクラスに情報を送信するサーブレットクラスがあります。

Delegatorクラスのメソッドに現在のHttpServletRequestオブジェクトとHttpServletResponseオブジェクトが必要です。メソッドシグネチャの一部として保持するのではなく、サーブレットクラスのThreadLocal変数に設定し、後でDelegatorクラスのメソッドのThreadLocal変数から取得することを考えました。

以下はサンプルコードです。

//Servlet class
    public class TestServlet extends HttpServlet{        
        protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,IOException{
           Utils.setHttpServletRequest(request);
           Utils.setHttpServletResponse(response);  
        }

    }

                             //******Utils class*************
public class Utils {
public static final ThreadLocal<HttpServletRequest> servletRequest = new ThreadLocal<HttpServletRequest>();

public static final ThreadLocal<HttpServletResponse> servletResponse = new ThreadLocal<HttpServletResponse>();

    public static HttpServletRequest getHttpServletRequest(){
        return servletRequest.get();
    }

    public static HttpServletResponse getHttpServletResponse(){
        return servletResponse.get();
    }

    public static void setHttpServletRequest( HttpServletRequest request ){
        servletRequest.set( request );
    }

    public static void setHttpServletResponse( HttpServletResponse response ){
        servletResponse.set( response );
    }
}

//Delegator clas

public class TestClass{
       public void testMethod(){
          //IS THIS CORRECT?
          HttpServletRequest request=Utils.getHttpServletRequest();
        }

}

このアプローチで問題が発生する可能性があるかどうかを提案していただけますか?

4

0 に答える 0