[jboss-jira] [JBoss JIRA] (WFLY-2722) @EJB injection in interceptor class and in target class result in injection of instances of two different classes

Stuart Douglas (JIRA) issues at jboss.org
Mon Jan 13 05:30:33 EST 2014


     [ https://issues.jboss.org/browse/WFLY-2722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stuart Douglas resolved WFLY-2722.
----------------------------------

    Resolution: Rejected


The current behaviour is fine. 

@EJB does not do a look up, instead it resolves the EJB and then binds it to the naming context. In effect there will be two entries bound to the shared naming context:

java:comp/env/com....Bar/animal
java:comp/env/com....BarInterceptor/animal

The actual EJB that is resolved depends on the packaged location. I know this is not super intuitive, but it is what the spec requires.
                
> @EJB injection in interceptor class and in target class result in injection of instances of two different classes
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: WFLY-2722
>                 URL: https://issues.jboss.org/browse/WFLY-2722
>             Project: WildFly
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: CDI / Weld
>    Affects Versions: 8.0.0.CR1
>            Reporter: Matus Abaffy
>            Assignee: Jozef Hartinger
>
> Interceptors spec, 2.2.1 - Interceptor Environment:
> bq. Interceptor class shares the enterprise naming context of its associated target class. (1)
> Assume the following scenario:
> Ear: test-ejb.jar, test1.war, test2.war
>   test-ejb.jar: Animal, BarBinding
>   test1.war: BarInterceptor, Dog
>   test2.war: Bar, Cat
> Short description of the classes:
> {code}
> @Stateful public class Dog implements Animal {...}
> {code}
> {code}
> @Stateful public class Cat implements Animal {...}
> {code}
> {code}
> @BarBinding @Stateless
> public class Bar {
>     @EJB
>     Animal animal;
> }
> {code}
> {code}
> @BarBinding @Priority(1000) @Interceptor
> public class BarInterceptor {
>     @EJB
>     Animal animal;
> }
> {code}
> Bar gets injected an instance of Cat, whereas BarInterceptor gets injected an instance of Dog, which IMHO contradicts (1).
> Test case at: https://github.com/cdi-spec/cdi-tck/pull/38
> (InterceptorEnvironmentJNDITest, InterceptorEnvironmentJNDISessionBeanTest)

--
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 jboss-jira mailing list