Jon Skeet dijo prácticamente todo, pero una aclaración a su consejo "solo los bits que necesita" - si necesita que sus parámetros de solicitud se transmitan, pero no necesita una dependencia en HttpServletRequest
, pase request.getParameterMap()
.
y que se extiende un poco en la opción ThreadLocal
- puede tener un Filter
que maneja todas las peticiones entrantes, y establece la petición en un
public final static ThreadLocal<HttpServletRequest> httpServletRequestTL =
new ThreadLocal<HttpServletRequest>();
Debido a que se está configurando en cada solicitud (cuidado con el filtro mapeo), no tendrá que preocuparse por el grupo de subprocesos de servlet-contenedor; siempre tendrá la solicitud actual.
P.S. esta es la lógica detrás de la utilidad de primavera propuesta por skaffman. Me uno a él para recomendar el componente estable, en lugar de hacer uno propio.
favor Elaborar *, donde *, * por qué * y * * cuando usted necesita esto, entonces podemos pop con mucho mejores sugerencias de cómo hacer esto el manera correcta. Publicar semi pseudocódigo/sscce también puede ser útil para obtener una idea de lo que está tratando de lograr. – BalusC
Necesito extender Solr QueryComponent que acepta SolrRequest. Desafortunadamente, SolrRequest no es una envoltura de solicitud de servlet. SolrDispatchFilter (se utiliza para gestionar solicitudes, no solo filtros) realiza la traducción HttpServletRequest a SolrRequest. Por lo tanto, la única forma de pasar información adicional desde la solicitud a mi QueryComponent personalizado es modificando SolrDispatchFilter, lo que no quiero hacer. Muchas gracias muchachos por su ayuda. La variable ThreadLocal debería hacer el trabajo por mí. – aseem