Hi,

The CDI spec defines a built-in bean for the type HttpServletRequest. In 3.8 it says:

"A servlet container must provide the following built-in beans, all of which have qualifier @Default:

a bean with bean type javax.servlet.http.HttpServletRequest, allowing injection of a reference to the HttpServletRequest"

An HttpServletRequest however can be wrapped multiple times and by multiple artefacts. I.e. by a ServerAuthModule, Filter and a RequestDispatcher.

The question now is; which version of the HttpServletRequest is supposed to be injected?

* The first one in the chain?
* The last one in the chain?
* The current one at a given point in the chain?

A little bit of experimenting seems to indicate it's now often "one of the first ones", e.g. the one that happened to be current when e.g. a ServletRequestListener that initialises a specific CDI implementation is called.

I think this is a little confusing, as working with an injected request can now totally ignore the request wrapping that has been done and break an application badly.

Thoughts?

Kind regards,
Arjan Tijms