[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