web-dev-qa-db-ja.com

JNDIとはその基本的な用途は何ですか?それはいつ使われますか?

  • JNDIとは何ですか?

  • その基本的な用途は何ですか?

  • それはいつ使われますか?

236
LetsSyncUp

JNDIとは

これは Java Naming and Directory Interface を表します。

その基本的な用途は何ですか?

JNDIを使用すると、分散アプリケーションは抽象的な、リソースに依存しない方法でサービスを検索できます。

いつ使うの?

最も一般的な使用例は、Java EEアプリケーションサーバー上にデータベース接続プールを設定することです。そのサーバーにデプロイされたアプリケーションはすべて、接続に関する詳細を知らなくても、JNDI名Java:comp/env/FooBarPoolを使用して必要な接続にアクセスできます。

これにはいくつかの利点があります。

  1. アプリケーションがdevl->int->test->prod環境から移動するデプロイメントシーケンスがある場合は、各環境で同じJNDI名を使用して、使用されている実際のデータベースを隠すことができます。アプリケーションは、環境間を移行するときに変更する必要はありません。
  2. 本番データベースにアクセスするための資格情報を知る必要がある人の数を最小限に抑えることができます。 JNDIを使用しているかどうかを知る必要があるのは、Java EEアプリケーションサーバーだけです。
209
duffymo

JNDIとは

JavaネーミングとディレクトリインタフェースTM (JNDI)は、Javaを使用して書かれたアプリケーションに命名およびディレクトリ機能を提供するアプリケーションプログラミングインタフェース(API)です。TM プログラミング言語特定のディレクトリサービスの実装に依存しないように定義されています。したがって、さまざまなディレクトリ(新規、新規、および配置済み)に共通の方法でアクセスできます。

その基本的な用途は何ですか?

その大部分は上記の答えでカバーされていますが、上記がより意味をなすようにここでアーキテクチャを提供したいと思います。

enter image description here

JNDIを使用するには、JNDIクラスと1つ以上のサービスプロバイダが必要です。 Java 2 SDK、v1.3には、次のネーミング/ディレクトリサービス用の3つのサービスプロバイダが含まれています。

  1. ライトウェイトディレクトリアクセスプロトコル(LDAP)
  2. 共通オブジェクト要求ブローカーアーキテクチャー(CORBA)共通オブジェクトサービス(COS)ネームサービス
  3. Javaリモートメソッド呼び出し(RMI)レジストリ

そのため、基本的にはオブジェクトを作成してディレクトリサービスに登録し、後でディレクトリサービスを検索して操作を実行できます。

88
Aniket Thakur

素人の言葉で言えば、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");
27
mel3kings

JNDIの概要

JNDIは、Javaプログラミング言語で書かれたアプリケーションに命名およびディレクトリ機能を提供する、Javaテクノロジで規定されているAPIです。これは、Javaのオブジェクトモデルを使用するJavaプラットフォーム用に特に設計されています。 JNDIを使用すると、Javaテクノロジに基づくアプリケーションは、任意のタイプの名前付きJavaオブジェクトを格納および取得できます。さらに、JNDIには、属性とオブジェクトの関連付け、およびそれらの属性を使用したオブジェクトの検索など、標準のディレクトリ操作を実行するためのメソッドがあります。

JNDIも、特定のネーミングやディレクトリサービスの実装とは無関係に定義されています。これにより、アプリケーションは共通のAPIを使用して、異なる、場合によっては複数のネーミングサービスおよびディレクトリサービスにアクセスできます。この共通APIの背後には、さまざまなネームサービスプロバイダやディレクトリサービスプロバイダをシームレスにプラグインできます。これにより、Javaテクノロジベースのアプリケーションは、LDAP、NDS、DNS、NIS(YP)などのさまざまな既存のネームサービスおよびディレクトリサービスの情報を利用できるだけでなく、アプリケーションを従来のソフトウェアおよびシステムと共存させることもできます。

ツールとしてJNDIを使用すると、Javaのオブジェクトモデルを利用するだけでなく、それらがデプロイされている環境とうまく統合された、強力で移植性の高い新しいアプリケーションを構築できます。

参考

JNDIとは何ですか?

JNDIはJava Naming and Directory Interfaceの略です。これはJ2EEに標準装備されています。

その基本的な用途は何ですか?

このAPIを使用すると、オブジェクト、デバイス、ネーミングファイル、ディレクトリサービスなど、さまざまな種類のデータにアクセスできます。リモートオブジェクトを見つけるためにEJBによって使用されます。 JNDIは、DNS、NDS、LDAP、CORBA、RMIなどの既存のサービスにアクセスするための共通のインタフェースを提供するように設計されています。

いつ使うのですか?

JNDIを使用して、読み取り操作やネームスペースの更新操作などの命名操作を実行できます。以下の操作が記述されています ここ

8
Sabin Chirila

ネーミングサービスは、名前をオブジェクトに関連付け、指定された名前に基づいてオブジェクトを検索します(RMIレジストリは、ネーミングサービスの好例です)。JNDIは、LDAP、DNSなど、既存の多くのネーミングサービスに共通のインタフェースを提供します。

JNDIがないと、リモートリソースの場所またはアクセス情報は、アプリケーションでハードコードされるか、構成で使用可能にされる必要があります。この情報を維持することは非常に面倒であり、間違いを起こしやすいです。

6
Chetan Laddha

公式ドキュメント が無視され、詳細が既に詳細に説明されているのはなぜかと思います。

しかし、あなたがケースを理解したいのであれば、 duffymo's answer を参照してください。

JavaネーミングとディレクトリインタフェースTM (JNDI)は、Javaを使用して書かれたアプリケーションに命名およびディレクトリ機能を提供するアプリケーションプログラミングインタフェース(API)です。TM プログラミング言語特定のディレクトリサービスの実装に依存しないように定義されています。このようにして、さまざまなディレクトリ(新規、新規、およびすでに配置されているディレクトリ)に共通の方法でアクセスできます。

そしてそのアーキテクチャ

enter image description here

そして通常 あなたはそれをどのように使用する

1
Hearen