Что такое JNDI? Каково его основное использование? Когда это используется? - PullRequest
240 голосов
/ 06 декабря 2010
  • Что такое JNDI ?

  • Каково его основное использование?

  • Когда это используется?

Ответы [ 7 ]

210 голосов
/ 06 декабря 2010

Что такое JNDI?

Это означает Java Naming and Directory Interface .

Каково его основное использование?

JNDI позволяет распределенным приложениям искать сервисы абстрактным, независимым от ресурсов способом.

Когда это используется?

Наиболее распространенный вариант использования - настройка пула соединений с базой данных на сервере приложений Java EE. Любое приложение, развернутое на этом сервере, может получить доступ к нужным соединениям, используя имя JNDI java:comp/env/FooBarPool без необходимости знать подробности о соединении.

Это имеет несколько преимуществ:

  1. Если у вас есть последовательность развертывания, в которой приложения перемещаются из среды devl->int->test->prod, вы можете использовать одно и то же имя JNDI в каждой среде и скрывать фактическую базу данных, которая используется. Приложения не должны изменяться при миграции между средами.
  2. Вы можете минимизировать количество людей, которым необходимо знать учетные данные для доступа к производственной базе данных. Только сервер приложений Java EE должен знать, используете ли вы JNDI.
91 голосов
/ 20 января 2014

Что такое JNDI?

Интерфейс именования и каталогов Java TM (JNDI) - это интерфейс прикладного программирования (API), который обеспечивает функциональность именования и каталогов дляприложения, написанные с использованием языка программирования Java TM .Он определяется как независимый от какой-либо конкретной реализации службы каталогов.Таким образом, к множеству каталогов (новых, новых и уже развернутых) можно получить общий доступ.

Каково его основное использование?

Большая часть этого вопроса описана в ответе выше, но я хотел бы предоставить здесь архитектуру, чтобы выше было больше смысла.

enter image description here

Чтобы использовать JNDI, у вас должны быть классы JNDI и один или несколько поставщиков услуг.Java 2 SDK v1.3 включает в себя трех поставщиков услуг для следующих служб именования / каталогов:

  1. Облегченный протокол доступа к каталогам (LDAP)
  2. Общая архитектура посредника запросов объектов (CORBA)Служба имен Common Object Services (COS)
  3. Реестр удаленных вызовов методов Java (RMI)

Таким образом, в основном вы создаете объекты и регистрируете их в службах каталогов, которые впоследствии можно выполнить для поиска ивыполнить операцию на.

27 голосов
/ 14 июня 2013

JNDI в терминах непрофессионала - это в основном интерфейс для возможности получения экземпляров внутренних / внешних ресурсов, таких как

  javax.sql.DataSource, 
  javax.jms.Connection-Factory,
  javax.jms.QueueConnectionFactory,
  javax.jms.TopicConnectionFactory,
  javax.mail.Session, java.net.URL,
  javax.resource.cci.ConnectionFactory,

или любого другого типа, определенного адаптером ресурсов JCA.Он обеспечивает синтаксис, позволяющий создавать доступ, будь то внутренний или внешний.т.е. (comp / env в данном случае означает, что где компонент / среда, есть много другого синтаксиса):

jndiContext.lookup("java:comp/env/persistence/customerDB");
12 голосов
/ 06 декабря 2010

Обзор JNDI

JNDI - это API, заданный в технологии Java, который предоставляет функции именования и каталогов для приложений, написанных на языке программирования Java.Он разработан специально для платформы Java с использованием объектной модели Java.Используя JNDI, приложения, основанные на технологии Java, могут хранить и извлекать именованные объекты Java любого типа.Кроме того, JNDI предоставляет методы для выполнения стандартных операций с каталогами, таких как связывание атрибутов с объектами и поиск объектов по их атрибутам.

JNDI также определяется независимо от какой-либо конкретной реализации службы именования или службы каталогов.Это позволяет приложениям получать доступ к различным, возможно, нескольким службам имен и каталогов, используя общий API.Разные провайдеры именования и службы каталогов могут быть легко подключены к этому общему API.Это позволяет приложениям на основе технологии Java использовать информацию в различных существующих службах именования и каталогов, таких как LDAP, NDS, DNS и NIS (YP), а также позволяет приложениям сосуществовать с устаревшим программным обеспечением и системами.

Используя JNDI в качестве инструмента, вы можете создавать новые мощные и переносимые приложения, которые не только используют преимущества объектной модели Java, но и хорошо интегрируются в среду, в которой они развернуты.

Ссылка

8 голосов
/ 17 января 2014

Что такое JNDI?

JNDI означает Java Naming and Directory Interface. Стандартно поставляется с J2EE.

Каково его основное использование?

С помощью этого API вы можете получить доступ ко многим типам данных, таким как объекты, устройства, файлы именования и службы каталогов, например. он используется EJB для поиска удаленных объектов. JNDI предназначен для обеспечения общего интерфейса для доступа к существующим службам, таким как DNS, NDS, LDAP, CORBA и RMI.

Когда это используется?

Вы можете использовать JNDI для выполнения операций именования, включая операции чтения и операции обновления пространства имен. Следующие операции описаны здесь .

6 голосов
/ 29 ноября 2017

Служба именования связывает имена с объектами и находит объекты на основе их заданных имен (реестр RMI является хорошим примером службы именования.) JNDI предоставляет общий интерфейс для многих существующих служб именования, таких как LDAP, DNS.

Без JNDI информация о местоположении или доступе к удаленным ресурсам должна быть жестко задана в приложениях или сделана доступной в конфигурации. Сохранение этой информации довольно утомительно и подвержено ошибкам.

1 голос
/ 28 марта 2019

Мне просто любопытно, почему официальные документы так игнорируются, что детально прорабатывают детали.

Но если вы хотите понять случаи, пожалуйста, обратитесь к ответ Даффимо .

Интерфейс именования и каталогов Java TM (JNDI) - это интерфейс прикладного программирования (API), который обеспечивает функциональность именования и каталогов для приложений, написанных на языке программирования Java TM . Он определяется как независимый от какой-либо конкретной реализации службы каталогов. Таким образом, к множеству каталогов - новых, новых и уже развернутых - можно получить общий доступ.

И его архитектура

enter image description here

И обычно как вы его используете .

...