[cdi-dev] New Servlet related scope - @UpgradeScoped (?)

Pavel Bucek pavel.bucek at oracle.com
Fri Dec 5 11:58:04 EST 2014


please see inline.

On 04/12/14 10:04, Martin Kouba wrote:
> Dne 4.12.2014 v 09:28 Pavel Bucek napsal(a):
>> Hello Arjan,
>>
>> On 03/12/14 19:44, arjan tijms wrote:
>>> Hi,
>>>
>>> On Wednesday, December 3, 2014, Pavel Bucek <pavel.bucek at oracle.com
>>> <mailto:pavel.bucek at oracle.com>> wrote:
>>>
>>>      Hi all,
>>>
>>>      I'm trying to figure out how to solve issue in JSR 356 - Java API for
>>>      WebSocket, related to CDI scope usable from WebSocket endpoints.
>>>      Problem
>>>      is, that "standard" scopes do not apply, because there is no
>>>      @RequestScoped (http response is already sent), HttpSession does not
>>>      need to be created and the rest does not seem to be applicable, ...
>>>
>>>      I believe that CDI specification should define @UpgradeScoped, which
>>>      would cover usages of HttpUpgradeHandler from Servlet API.
>>>      (Similarly as
>>>      it does for @RequestScoped, @SessionScoped, ... )
>>>
>>>
>>> Wouldn't it be a better option to have WebSocket define that scope,
>>> using CDI to implement it?
>> That is one possibility, but @UpgradeScoped would be more general than
>> just for WebSocket - it would apply for all HTTP/1.1+ Upgrade
>> applications. In my eyes, it is something which was forgotten to do in
>> Java EE 7 release, since HttpUpgradeHandler was introduced in it.
>>
>> Also please note, that other Servlet related scopes are already in CDI
>> spec, so it seems like it belongs there more than anywhere else. This
>> might have multiple reasons - for example, you can easily define
>> relationship between @UpgradeScoped and others, already existing ones.
>> In this sense, CDI specification now depends on Servlet API (it
>> references some of the classes defined in it), but Servlet does not do
>> that for CDI. I don't think that Servlet spec should introduce similar
>> dependency just because of new scope.
> That's a good point. However, I don't think it's a good path to follow.
> I mean if it were in CDI spec, CDI implementations would be required to
> implement this. However, Servlet spec is not very clear in many areas
> and doesn't always provide a powerful enough SPI. Even now there are
> technical issues with similar requirements (e.g. @RequestScoped during
> AsyncListener invocations). I'm not so sure about HttpUpgradeHandler
> though...

And what if the @UpgradeScoped definition would need to state something 
like "this scope is part of @ApplicationScoped"? That would result even 
in more confusion and cross references CDI to Servlet and vice versa.

I could see this being part of Servlet spec only if all other 
"Servlet-related" scopes are there as well.

Con somebody suggest what should I do next? I can file an issue against 
CDI spec and even against Servlet spec, but my feeling is that it might 
be deferred on both issue trackers as "not in scope, it should be done 
somewhere else". I know I already asked, but - is there any discussion 
between CDI and Servlet spec leads about this topic?

Thanks and regards,
Pavel



More information about the cdi-dev mailing list