一尘不染

Tomcat中连接的唯一标识符

tomcat

我想为与Tomcat建立的每个连接获取唯一的标识符。我不是在谈论会话或用户(客户端)的唯一性,而是每个连接。假设客户A发送了一个GET,然后发送了另一个。在我的场景中,这是两个单独且唯一的连接。

在Tomcat中,是否有任何变量或某些东西可以扮演标识符的角色?


阅读 392

收藏
2020-06-16

共1个答案

一尘不染

一种选择是使用ServletFilter:

public class UniqueRequestFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res,
                         FilterChain chain) throws IOException, ServletException {

        String requestID = UUID.randomUUID().toString()
        //save to ThreadLocal...

        try {
            chain.doFilter(req, res);
        }
        finally {
            //remove from ThreadLocal
        }
    }


    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }
}

您可以随时在应用程序中从ThreadLocal获取请求值。

2020-06-16