モジュール java.naming

パッケージ javax.naming

ネーム・サービスにアクセスするためのクラスおよびインタフェースを提供します。

このパッケージは、Java Naming and Directory Interface™ (JNDI)の命名操作を定義します。   JNDIは、Javaプログラミング言語で記述されたアプリケーションにネーミングおよびディレクトリ機能を提供します。 ほかのネームおよびディレクトリ・サービスの実装と独立して動作するように設計されています。 新しいサービス、展開されつつあるサービス、すでに展開されているサービスなど、さまざまなサービスに対して共通の方法でアクセスすることができます。

コンテキスト

このパッケージは、Contextインタフェースで表される、コンテキストの概念を定義します。 コンテキストはオブジェクトに対する名前のバインディングのセットで構成されます。 Contextは、オブジェクトの検索、バインディング、バインディング解除、名前の変更、およびサブコンテキストの作成と破棄を実行するためのコア・インタフェースです。

lookup()は、もっとも頻繁に使用される操作です。 検索したいオブジェクトの名前をlookup()に提供すると、その名前にバインドされたオブジェクトが返されます。 この例として、プリンタを検索して、出力するプリンタ・オブジェクトにドキュメントを送信するコードを次に示します。

Printer printer = (Printer)ctx.lookup("treekiller");
printer.print(report);

名前

Contextインタフェース内のすべてのネーミング・メソッドに、2つのオーバーロードがあります。1つはName引数を受け入れるオーバーロードで、もう1つは文字列名を受け入れるオーバーロードです。 Nameは、ジェネリック名を表す(複数のコンポーネントがある場合はゼロから順序付けされる)インタフェースです。 これらのメソッドの場合、複数の名前空間にまたがる名前を使用してオブジェクトに名前を付けるために、Nameを使用して合成名 (CompositeName)を表せます。

Nameを受け入れるオーバーロードは、アプリケーションで名前の操作(名前の作成、コンポーネントの比較など)を行う場合に便利です。 1つの名前で単純に読み込み、対応するオブジェクトを検索するなどの単純なアプリケーションで、文字列名を受け入れるオーバーロードはより役に立ちます。

バインディング

Bindingクラスはオブジェクトに対する名前のバインディングを表します。 このクラスは、バインドされたオブジェクトの名前、オブジェクトのクラスの名前、およびオブジェクト自体が格納される1つのタプル(組)です。

実際、Bindingクラスはオブジェクトの名前とオブジェクトのクラス名だけで構成される、NameClassPairのサブクラスです。 NameClassPairは、オブジェクトのクラスに関する情報だけが必要で、オブジェクトを取得するのに余計な手間をかけたくない場合に便利です。

リファレンス

オブジェクトはネーミングおよびディレクトリ・サービスに異なる方法で格納されます。 オブジェクト・ストアがJavaオブジェクトの格納をサポートしている場合、オブジェクトの直列化された形式での格納がサポートされます。 ただし、Javaオブジェクトの格納をサポートしないネーミングおよびディレクトリ・サービスもあります。 さらに、ディレクトリ内のいくつかのオブジェクトにとっては、Javaプログラムは単にそれらのオブジェクトにアクセスするアプリケーションの1グループにすぎません。 この場合、直列化されたJavaオブジェクトは最適な表現にはなりません。 JNDIは、オブジェクトのコピーの構築方法に関する情報が格納される、Referenceクラスで表される参照を定義します。 JNDIは、参照の検索先を、ディレクトリからこの参照が表すJavaオブジェクトへ変更しようとします。その結果、JNDIクライアントはディレクトリ内に格納される内容がJavaオブジェクトであるとみなします。

初期コンテキスト

JNDIでは、すべてのネーミングおよびディレクトリ操作はコンテキストに関連して実行されます。 絶対的なルートはありません。 したがって、JNDIはネーミングおよびディレクトリ操作の開始地点を指定する初期コンテキストInitialContextを定義します。 一度初期コンテキストを指定すると、ほかのコンテキストやオブジェクトを参照する場合もその初期コンテキストを使用できます。

例外

JNDIはネーミングおよびディレクトリ操作を実行する過程でスローできる例外のクラス階層を定義します。 このクラス階層のルートはNamingExceptionです。 特定の例外を扱うプログラムでは、その例外の対応するサブクラスをキャッチできます。 それ以外の場合、プログラムではNamingExceptionをキャッチします。

パッケージの仕様

JNDI APIの仕様と関連ドキュメントについては、JNDIのドキュメントを参照してください。
導入されたバージョン:
1.3