JNDI - это удобный способ для приложения сказать «мне нужен ресурс X», а для контейнера (например, Tomcat) сказать «ресурс X доступен, посмотрите здесь или там, где X фактически настроен».
Вы можете использовать вышеуказанный механизм, чтобы избежать, например, жесткого кодирования свойств базы данных в вашем коде.Вы можете достичь того же самого, имея файл конфигурации, но некоторые контекстные файлы (например: .war файлы) не сохраняются между повторными развертываниями, поэтому они не подходят.
Хорошие примеры нак JNDI относятся источники данных базы данных, ссылки на серверы электронной почты SMTP, области безопасности и т. д.
Думайте о JNDI как о HashMap
, где ключом является String
, а значением является либоконкретный объект или другой HashMap
той же структуры.Поэтому поиск значения, такого как jndi://a/b
, приведет к переходу на карту верхнего уровня, нахождению ключа a
и ожиданию, что его значение будет другой картой.Тогда ключ b
будет найден в этой подкарте, и соответствующее значение будет возвращено пользователю.