[cdi-dev] [JBoss JIRA] (CDI-129) Clarify behaviour of @ApplicationScoped in EARs

Pete Muir (JIRA) jira-events at lists.jboss.org
Wed Oct 17 10:18:01 EDT 2012

    [ https://issues.jboss.org/browse/CDI-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12727258#comment-12727258 ] 

Pete Muir commented on CDI-129:

In this comment I'll try to go through the points from Mark and Jozef, and add some more facts that I have. I'll then do a separate comment with my opinion :-)

> ... beans that execute within the same application.
Too bad it's neither in the CDI nor the EE spec defined what they mean with application. Both sometimes refer to web-applications and sometimes to enterprise-applications. It's just not clear.

I previously asked Bill Shannon and Linda DeMichiel for a clarification on this. Bill said:

There may be places where we don't use the terminology as precisely as we should, but I think Chapter EE.8 of the platform spec makes it clear that an ear file is a single Java EE application.

So, whilst it may not be clear, the official line is that an "application" is an ear, if ear is used.

Afair it was 2 options:
Option a.) just disallow @Specializes and @Alternatives for all beans defined in a shared jar. Regardless of it's scope.
Option b.) inject only beans defined in the shared jar into another bean of a shared jar. E.g. MailService would always get an instance of A injected. Imo this is pretty crucial as @Inject X x; in a JSF backing bean would give you a different contextual instance (even of a totally different type) than the same code @Inject X x; in the MailService.

We discussed this at the CDI EG meeting and the consensus was that option B is correct, as the injected instance depends on how the beans resolve, and thus getting a different contextual when a different bean resolves is expected.
> Clarify behaviour of @ApplicationScoped in EARs
> -----------------------------------------------
>                 Key: CDI-129
>                 URL: https://issues.jboss.org/browse/CDI-129
>             Project: CDI Specification Issues
>          Issue Type: Clarification
>          Components: Contexts
>    Affects Versions: 1.0
>            Reporter: Mark Struberg
>            Assignee: Pete Muir
>             Fix For: 1.1 (Proposed)
> Since @ApplicationScoped currently is defined in 6.5.2 as to be 'like in the Servlet specification' this means that you will get a new instance for every WebApplication (WAR file).
> There is currently no specified CDI scope for providing a single shared instance for a whole EAR.
> We could (ab-)use @Singleton for that, but this is currently not well defined at all.
> Alternatively we could introduce an own new annotation like @EnterpriseScoped or likes. 

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

More information about the cdi-dev mailing list