9 Replies Latest reply on Oct 22, 2010 4:52 AM by Kamil Demecki

    Unable to override JNDI name for session bean

    Kevin Keigwin Newbie

      I'm using JBossAS 5.1.0 and have just upgraded the Eclipse projects for an existing application to support EJB3. I then converted one of the session beans in the app to an EJB3-style declaration. I've been able to successfully call this bean if I use JBoss' default JNDI name for the bean.

      Now I need to override the JNDI name and have had no luck doing this. The mappedName attribute in the @Stateless annotation seems to have no effect on the name the bean is bound to. For example, with the bean declared this way:

      public class GeographyService implements GeographyServiceLocal

      the JBoss management console shows it is still bound to the default name:

      +- UnitTestsEAR (class: org.jnp.interfaces.NamingContext)
       | +- GeographyService (class: org.jnp.interfaces.NamingContext)
       | | +- local-com.sellcore.facade.common.GeographyServiceLocal (class: Proxy for: com.sellcore.facade.common.GeographyServiceLocal)
       | | +- local (class: Proxy for: com.sellcore.facade.common.GeographyServiceLocal)

      where UnitTestsEAR is the EAR containing the bean and its client WAR.

      The appserver logs show that the new name is found by JBoss:

      15:12:13,249 INFO [JBossASKernel] Added bean(jboss.j2ee:ear=UnitTestsEAR.ear,jar=SellCoreService.jar,name=PrintApplication,service=EJB3) to KernelDeployment of: SellCoreService.jar
      15:12:13,249 INFO [JBossASKernel] installing bean: jboss.j2ee:ear=UnitTestsEAR.ear,jar=SellCoreService.jar,name=GeographyService,service=EJB3
      15:12:13,249 INFO [JBossASKernel] with dependencies:
      15:12:13,249 INFO [JBossASKernel] and demands:
      15:12:13,249 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService
      15:12:13,249 INFO [JBossASKernel] and supplies:
      15:12:13,249 INFO [JBossASKernel] jndi:UnitTestsEAR/GeographyService/local-com.sellcore.facade.common.GeographyServiceLocal
      15:12:13,249 INFO [JBossASKernel] jndi:UnitTestsEAR/GeographyService/local
      15:12:13,249 INFO [JBossASKernel] jndi:com.sellcore.service.GeographyService
      15:12:13,249 INFO [JBossASKernel] Class:com.sellcore.facade.common.GeographyServiceLocal

      But the value I specified as the mappedName is not used at binding time, as shown later in the log:

      15:12:13,937 INFO [SessionSpecContainer] Starting jboss.j2ee:ear=UnitTestsEAR.ear,jar=SellCoreService.jar,name=GeographyService,service=EJB3
      15:12:13,937 INFO [EJBContainer] STARTED EJB: com.sellcore.service.common.GeographyService ejbName: GeographyService
      15:12:13,952 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
       UnitTestsEAR/GeographyService/local - EJB3.x Default Local Business Interface
       UnitTestsEAR/GeographyService/local-com.sellcore.facade.common.GeographyServiceLocal - EJB3.x Local Business Interface

      I know I'm probably doing something really ignorant, but I can't figure out what. I'd really appreciate any assistance!