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

Jozef Hartinger (JIRA) jira-events at lists.jboss.org
Thu Oct 18 03:52:02 EDT 2012

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

Jozef Hartinger commented on CDI-129:

{quote}Mark: Thus the MailService instance of your very webapp inoking r.someMethod() would work on an instance of S. {quote}

If we combine your statement with a quote from Section 5.1 of the CDI 1.0 spec:

{quote}A bean packaged in a certain module is available for injection, lookup and EL resolution to classes and JSP/JSF pages
packaged in some other module if and only if the bean class of the bean is required to be accessible to the other module by
the class accessibility requirements of the module architecture.  {quote}

We can clearly see that you are wrong. The web app is not required to be accessible from the shared library. Therefore, *S is not available for injection in the shared library and thus cannot be injected into MailService*. What you are talking about is not CDI.

{quote}Mark: Dude, who is creating the instance of MailService? It is the BeanManager which uses the TCCL of your webapp{quote}
As Pete already explained, your TCCL argument is irrelevant to modularity in CDI.
{quote}Pete: I don't believe the TCCL is relevant here, it's only ever used explicitly to load classes, not implicitly if you instantiate via the new keyword, which is the model we are trying to follow.{quote}
> 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