Jon Skeet сказал практически все, но одно пояснение к его совету «только то, что вам нужно» - если вам нужны ваши параметры запроса, переданные вниз, но вам не нужна зависимость от HttpServletRequest
, пройдите request.getParameterMap()
.
И простирающийся немного на опции ThreadLocal
- вы можете иметь Filter
, который обрабатывает все входящие запросы, и устанавливает запрос в
public final static ThreadLocal<HttpServletRequest> httpServletRequestTL =
new ThreadLocal<HttpServletRequest>();
Потому что вы устанавливаете его на каждом запросе (поосторожнее с фильтром сопоставление), вам не придется беспокоиться о пуле потоков сервлетов-контейнеров - вы всегда будете иметь текущий запрос.
P.S. это логика утилиты весны, предложенная скаффманом - я присоединяюсь к нему, рекомендуя стабильный компонент, а не создавая свои собственные.
Пожалуйста разработать *, где *, * почему * и * когда * вам это нужно, то мы можем выскочить с гораздо лучшими предложениями, как сделать этого правильно. Публикация полу псевдокода/sscce также может помочь получить картину того, чего вы пытаетесь достичь. – BalusC
Мне нужно расширить Solr QueryComponent, который принимает SolrRequest. SolrRequest, к сожалению, не является оберткой вокруг запроса сервлета. SolrDispatchFilter (используется для обработки запроса, а не только для фильтра) выполняет перевод HttpServletRequest в SolrRequest. Поэтому единственный способ передать дополнительную информацию из запроса до моего пользовательского QueryComponent - это изменить SolrDispatchFilter, который я не хочу делать. Большое вам спасибо за помощь. Переменная ThreadLocal должна выполнять эту работу для меня. – aseem