В каких случаях может потребоваться JNDI?
Если кратко, то обычно, когда у вас есть какой-то сервер приложений, вы там создаете всякие ресурсы (data-source, jms, etc) средствами самого сервера, а не внутри своего приложения. А приложение уже получает ссылку на ресурс из JNDI по имени ресурса.
JNDI отличный функционал, который сможет самостоятельно разруливать взаимоотношения вашего приложения допустим с сервером СУБД и т.д.. Этим функционалом обладает даже WEB контейнер Apache Tomcat.