Как говорит Адиел, правильный способ сделать это, вероятно, использовать контекст запроса (то есть HttpServletRequest), а не создавать ThreadLocal. Хотя, конечно, здесь можно использовать ThreadLocal, вы должны быть осторожны, чтобы очистить ваш поток, если вы это сделаете, так как в противном случае следующий запрос, который получает поток, увидит значение, связанное с предыдущим запросом. (Когда первый запрос будет выполнен с потоком, поток вернется в пул, и следующий запрос увидит его.) Нет необходимости управлять такими вещами, когда контекст запроса существует именно для этой цели.