JNDI en este escenario se utiliza como una ubicación central a través del cual son 'nombres' (un tipo de URL) enrutado a un bean EJB. Piensa en cómo se asigna un servlet a una URL.
Si los beans EJB son locales para una aplicación (por ejemplo, residen dentro del módulo web o dentro del módulo EJB del mismo EAR), entonces no es necesario que entre en contacto con JNDI. A saber, probablemente usaría la inyección para obtener instancias de su bean y entonces no se necesita JNDI.
Sin embargo, si necesita direccionar un bean EJB en un servidor remoto o si quiere buscar (un proxy para) un bean programáticamente, usaría su nombre JNDI y JNDI para obtenerlo.
Consulte esto para obtener más información, incluidas ENC: Declaring @Resource and @EJB at the class level in Java EE6