我正在ThreadLocal中设置一个ServletFilter变量,用于在Web应用程序中设置租户。现在,我需要在请求处理结束时执行ThreadLocal清理。

我认为这是在多租户应用程序中获取/设置tenantId的常用方法。
但是我无法确定可用于执行此清理操作的公共位置。

是否有任何挂钩/回调可用于此目的?

最佳答案

正如您说的那样,您正在ServletFilter中设置ThreadLocal变量,您应该在同一过滤器中进行清理。就像是 :

public void doFilter(ServletRequest request, ServletResponse response, FilterChain fc) throws ServletException, IOException {
    //set thread local variable
    // stuff ...
    try {
        // other stuff ...
        fc.filter(request, response)
        // still other stuff ...
    }
    finally {
        // cleanup ThreadLocal variable
    }
}

关于java - HttpServletRequest的 Hook /回调完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25264088/

10-10 22:40