HOWTO · Java

JNDI と Java でのその使用

この記事では、JNDI(Java Naming and Directory Interface) とその使用法について説明します。 また、JNDI と長所と短所を比較します。

この記事では、JNDI (Java Naming and Directory Interface) とは何か、その主な用途、およびいつ使用されるかについて説明します。 また、Java での JNDI の長所と短所を比較します。

Java の Java Naming and Directory Interface (JNDI)

Java プログラムは、アプリケーション プログラミング インターフェイス (API) である JNDI の名前とディレクトリの機能を使用できます。

分散システムで利用することができます。つまり、システムに多数のサーバーがある場合でも、すべてのサーバーで情報を共有できます。

  • たとえば、JNDI ディレクトリを使用して、アプリケーション サーバーの IP アドレスなどの構成データを保存すると、アプリはこの情報を取得できます。
  • JNDI は、ディレクトリ サービスの実装から独立して動作することを意図しています。 その結果、ユーザーは、新しいディレクトリ、開発中のディレクトリ、実装済みのディレクトリなど、さまざまなディレクトリにアクセスできます。

Java での JNDI の使用

JNDI を使用すると、オブジェクト、デバイス、名前のファイル、ディレクトリ サービスなど、さまざまな種類のデータにアクセスできます。 たとえば、EJB はこれを使用してリモート オブジェクトを検索します。

JNDIは、DNSNDSLDAPCORBARMIなどの既存のサービスへの標準化されたエントリ ポイントを提供するために開発されました。

したがって、JNDI を利用するには、JNDI クラスと 1つ以上のサービス プロバイダが必要です。 Java 2 SDK は、次に示すネーム サービスとディレクトリ サービスに対して 3つの異なるサービス プロバイダを提供します。

  • ライトウェイト ディレクトリ アクセス プロトコル (LDAP)
  • Common Object Request Broker Architecture (CORBA) Common Object Services (COS) ネーム サービス
  • Java Remote Method Invocation (RMI) レジストリ

したがって、最初にオブジェクトを作成してからディレクトリ サービスに登録し、後で検索して操作を実行できるようにします。

Java での JNDI の長所と短所

以下は、JNDI が提供する利点の一部です。

  • アプリケーションが devl->int->test->prod 環境から移行するデプロイメント シーケンスを使用する場合、各環境で同じ JNDI 名を使用して、実際に使用されるデータベースを隠すことができます。
  • アプリケーションを環境間で移行する場合、変更を加える必要はありません。
  • 読み取り操作や名前空間の変更操作などのネーミング アクティビティは、JNDI を使用して実行できます。
  • 本番環境でデータベースへのアクセスを必要とする人数を最小限に抑えることができます。 JNDI の使用法は、Java EE アプリケーション サーバー以外には隠されている可能性があります。
  • リソースが JNDI ディレクトリにリストされている限り、コードは単一のコンピューターまたは分散環境でリソースにアクセスできます。
  • 強力でポータブルな新しいアプリを作成できます。 また、Java のオブジェクト モデルを使用しており、それらが配置されている環境とうまく接続されています。

欠点の 1つを以下に示します。

  • 欠点の 1つは、デフォルトのセキュリティ モデルがないことです。 ただし、一部の実装では、ディレクトリ サービスへの暗号化された接続を確立するための API が提供されています。