Джон Скит сказал практически все, но одно пояснение к его совету «только те биты, которые вам нужны» - если вам нужно передать параметры вашего запроса, но вам не нужна зависимость от HttpServletRequest
, передайте request.getParameterMap()
.
И немного расширив опцию ThreadLocal
- вы можете иметь Filter
, который обрабатывает все входящие запросы и устанавливает запрос в
public final static ThreadLocal<HttpServletRequest> httpServletRequestTL =
new ThreadLocal<HttpServletRequest>();
Поскольку вы устанавливаете его для каждого запроса (осторожно с отображением фильтра), вам не нужно беспокоиться о пуле потоков сервлет-контейнера - у вас всегда будет текущий запрос.
P.S. это логика, стоящая за утилитой spring, предложенной skaffman - я присоединяюсь к нему, чтобы порекомендовать стабильный компонент, а не создавать свой собственный.