JNDI (Java Naming and Directory Interface)

JNDI (Java Naming and Directory Interface)とは、ネーミング・サービスおよびディレクトリー・サービスを扱うためのインタフェースです。

ネーミング・サービスとは、名前をオブジェクトに関連付けたり、名前を基に関連付けられたオブジェクトを検索することのできるサービスです。

ディレクトリー・サービスとは、ネーミング・サービスを拡張したものです。ネーミング・サービスと同様に、関連付けられたオブジェクトを検索することに加えて、オブジェクトの属性を扱うこともできます。

ネーミング・サービスやディレクトリー・サービスを提供するサービス・プロバイダには、次のようなものがあります。

これらのサービス・プロバイダにアクセスするためのインタフェースがJNDIです。

ネーミング・サービスにアクセスするには、javax.namingパッケージを使用します。

javax.namingパッケージのインポート

javax.namingパッケージは、ネーミング・サービスにアクセスするためのクラスやインタフェースを提供します。ネーミング・サービスにアクセスするJavaアプリケーションは、javax.namingパッケージをインポートする必要があります。

import javax.naming.*;

javax.namingパッケージがスローする例外

javax.namingパッケージのメソッドは、javax.naming.NamingException例外をスローすることがあります。したがって、JDBCパッケージのメソッドを呼び出す箇所では、これをキャッチまたはスロー宣言する必要があります。

javax.naming.NamingException例外をキャッチする例を次に示します。

try {
  // javax.namingパッケージのメソッド呼び出し
} catch (NamingException e) {
  // 例外処理
}

javax.naming.NamingException例外をスロー宣言する例を次に示します。

public class void main(String args[]) throws NamingException {
  // javax.namingパッケージのメソッド
}

Contextインタフェース

Contextインタフェースは、バインディング(名前とオブジェクトの関連付け)のセットから構成されるネーミング・コンテキストを表しています。

初期コンテキストを作成するJavaソースコードの例を次に示します。

Context context = new InitialContext();

ネームド・オブジェクトの検索

名前を基に、関連付けられたオブジェクト(ネームド・オブジェクト)を検索するには、Context.lookup()メソッドを使用します。

Object lookup(String name) throws NamingException
Object lookup(Name name) throws NamingException