1 Reply Latest reply on Sep 21, 2009 5:23 AM by E G

    ejb-ref lookup does not work in JBoss 4.2.0.GA_CP07

    E G Newbie

      Hi,
      I am using JBoss 4.2.0.GA_CP07 with ear-isolation = true and call-by-value=false

      I have the following situation:

      ejb A needs to call ejb B, and both are in different isolated EARs.

      To do this, as stated on the JBoss community wiki's:

      http://www.jboss.org/community/wiki/classloadingconfiguration

      I have to configure ejb-jar.xml and jboss.xml of ejb A with references to ejb b.

      So, these are my configuration files:
      ejb A = TISService
      ejb B = GTSService

      ejb-jar.xml of ejb A

      ...
      <enterprise-beans>
       <session>
       <display-name>TISService</display-name>
       <ejb-name>TISService</ejb-name>
       <home>it.ltm.ca.tis.session.TISServiceHome</home>
       <remote>it.ltm.ca.tis.session.TISServiceRemote</remote>
       <local-home>it.ltm.ca.tis.session.TISServiceLocalHome</local-home>
       <local>it.ltm.ca.tis.session.TISServiceLocal</local>
       <ejb-class>it.ltm.ca.tis.session.TISServiceBean</ejb-class>
       <session-type>Stateless</session-type>
       <transaction-type>Container</transaction-type>
      
       <!-- RIFERIMENTO AL GTS -->
       <ejb-local-ref>
       <ejb-ref-name>ejb/KCP_GTSServiceLocalReference</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <local-home>it.ltm.kcp.gts.session.GTSServiceLocalHome</local-home>
       <local>it.ltm.kcp.gts.session.GTSServiceLocal</local>
       </ejb-local-ref>
      
       </session>
      ...
      [/CODE]
      
      jboss.xml of ejb A
      [CODE]
      ...
      <jboss>
       <enterprise-beans>
       <session>
       <ejb-name>TISService</ejb-name>
       <jndi-name>ejb/TISService</jndi-name>
       <local-jndi-name>java:/ejb/TISService</local-jndi-name>
      
       <!-- RIFERIMENTO AL GTS -->
       <ejb-local-ref>
       <ejb-ref-name>ejb/KCP_GTSServiceLocalReference</ejb-ref-name>
       <local-jndi-name>java:/ejb/KCP_GTSService</local-jndi-name>
       </ejb-local-ref>
       </session>
      ...
      



      This is the code I am using to lookup ejb B from a class in ejb A (taken from an example in the JBoss UserGuide):

      Context ctx = (Context) new InitialContext().lookup("java:comp/env"
      GTSServiceLocalHome local = (GTSServiceLocalHome) ctx.lookup("ejb/KCP_GTSServiceLocalReference"); //I am using the <ejb-ref-name> as the lookup String.
      GTSService instance = local.create();
      


      The problem is that the lookup of the ejb-ref fails.

      If I try to lookup the JNDI name of the EJB, the lookup succeed, but the create fails with "Invalid invocation, check your deployment..." because it is trying to create an instance of ejb B that is in an isolated ear.

      Can someone help me?

      Why the lookup of the ejb-ref-name fails?
      The main problem is that the ejb-ref-name (ie: ejb/KCP_GTSServiceLocalReference)
      is present in the JNDI Tree:
      Ejb Module: CA_TerminalInteractionSystemEJB.jar
      
      java:comp namespace of the TISService bean:
      
       +- HandleDelegate (class: org.jboss.proxy.ejb.handle.HandleDelegateImpl)
       +- ORB (class: org.jacorb.orb.ORB)
       +- env (class: org.jnp.interfaces.NamingContext)
       | +- ejb (class: org.jnp.interfaces.NamingContext)
       | | +- KCP_GTSServiceReference[link -> ejb/KCP_GTSService] (class: javax.naming.LinkRef)
       | | +- KCP_GTSServiceLocalReference[link -> java:/ejb/KCP_GTSService] (class: javax.naming.LinkRef)
      


      I hope to get an answer, I am really blocked here. Thanks

      Thanks.