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

    Unable to override JNDI name for session bean

    keigwin

      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:

      @Stateless(mappedName="com.sellcore.service.GeographyService")
      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!

      Thanks,

      K-