[jboss-user] [EJB 3.0] - Referencing EJB 2.1 session from EJB 3 session
huuskart
do-not-reply at jboss.com
Tue Nov 20 08:37:44 EST 2007
How can I access EJB 2.1 session from EJB 3 session in JBoss 4.2.1.GA?
The EJB 3 sessions and EJB 2.1 session are deployed in separate EJB jar files, but they are in the same EAR file, so they are part of the same J2EE application.
I have tried the following methods:
Injecting EJB 2.1 home using EJB annotation, simply like this:
@EJB
private foo.bar.SomeLocalHome someHome;
results in the error:
java.lang.RuntimeException: could not resolve global JNDI name for @EJB for container WhatEver: reference class: foo.bar.SomeLocalHome ejbLink: not used by any EJBs
Which is not true, because that LocalHome class is used by a EJB 2.1 session bean.
Injecting local interface using EJB annotation:
@EJB
private foo.bar.SomeLocal some;
results in the same error.
Injections with beanName set:
@EJB(beanName = "Some")
private foo.bar.SomeLocalHome someHome;
result in error
java.lang.RuntimeException: Failed to populate ENC: env/foo.bar.WhatEver/someHome global jndi name was null
Adding local reference to ejb-jar.xml, like so:
<ejb-name>WhatEver</ejb-name>
<ejb-local-ref>
<ejb-ref-name>Some</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>foo.bar.SomeLocalHome</local-home>
<ejb-link>Some</ejb-link>
</ejb-local-ref>
and injecting like so:
@EJB(name = "Some")
private SomeLocalHome someHome;
fails because JBoss complains that "IGNORING DEPENDENCY ... too little information".
Creating the local ref like so
<ejb-name>WhatEver</ejb-name>
<ejb-local-ref>
<ejb-ref-name>Some</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>foo.bar.SomeLocalHome</local-home>
foo.bar.SomeLocalHome
<ejb-link>Some</ejb-link>
</ejb-local-ref>
fails because
15:25:51,749 WARN [EJBHandler] IGNORING DEPENDENCY: unable to find <ejb-local-ref> of interface foo.bar.SomeLocal and ejbLink of Some in ejb-jar.xml of WhatEver it might not be deployed yet
Looking at the code (I think I found the correct place), the local-ref handling code simply ignores local-home, and seems to search for EJB that implements the local interface, which is daft when I want to link to EJB 2.1.
Maybe injection without JNDI name (the first attempt above) fails for a similar reason?
I'm currently looking up the local home interface manually (new InitialContext().lookup("Some")), and it works, but this is not very nice.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4106373#4106373
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4106373
More information about the jboss-user
mailing list