パッケージ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つのオーバーロードがあります: Name
引数を受け入れ、文字列名を受け入れる引数。 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
-
クラス説明この例外は、ネーミング・サービスまたはディレクトリ・サービスにアクセスする際に認証エラーが発生した場合にスローされます。この例外は、要求された認証の特定のフレーバがサポートされていない場合にスローされます。このクラスは、通信端点のアドレスのバイナリ形式を表します。このクラスは、コンテキストの名前とオブジェクトとのバインディングを表します。この例外は、オペレーションをこれ以上進められない名前のポイントにオペレーションが達したことを示すためにスローされます。この例外は、クライアントがディレクトリ・サービスまたはネーミング・サービスと通信できない場合にスローされます。このクラスは、合成名を表します。合成名とは、複数の名前空間にまたがる一連のコンポーネントの名前です。このクラスは複合名を表します。複合名とは、階層名前空間から取得される名前です。この例外は、構成上の問題がある場合にスローされます。このインタフェースは、名前からオブジェクトへのバインディングのセットから構成されるネーミング・コンテキストを表します。この例外は、空ではないコンテキストを破棄しようとした場合にスローされます。このクラスは、ネーミング操作を実行するための開始コンテキストです。この例外は、要求されたオペレーションを完了するためにリソースが利用できない場合にスローされます。この例外は、ネーミング操作の呼出しが割り込まれた場合にスローされます。この例外は、指定された名前がネーミング・システムのネーミング構文と一致しないことを示します。この例外は、ユーザーまたはシステムで指定された制限によってメソッドが異常終了した場合にスローされます。この例外は、リンクの解決中に発生した問題を記述するために使用されます。この例外は、リンクの解決を試行中にループが検出されたか、またはリンク数の実装固有の制限に達したときにスローされます。このクラスは参照を表します。参照の内容はリンク名と呼ばれる名前で、コンテキストの基本名にバインドされます。この例外は、リンクを解決または構築するときに無効なリンクが見つかった場合にスローされます。
Name
インタフェースは汎用名を表します -- コンポーネントの順序付けされたシーケンス。この例外は、名前がすでにほかのオブジェクトにバインドされているために、バインディングを追加できないことを示すメソッドによってスローされます。このクラスは、コンテキストのバインディングのオブジェクト名とクラス名のペアを表します。この例外は、バインドされていないために、名前のコンポーネントを解決できない場合にスローされます。このインタフェースは、1階層の名前空間から名前の構文を解析するために使用されます。このインタフェースは、javax.namingおよびjavax.naming.directoryパッケージ内のメソッドによって返されたリストを列挙するために使用されます。ContextおよびDirContextインタフェースでの操作によってスローされるすべての例外のスーパー・クラスです。ContextおよびDirContextインタフェースでの操作によってスローされるセキュリティに関連する例外のスーパー・クラスです。この例外は、初期コンテキスト実装が作成できない場合にスローされます。この例外は、クライアントがアクセス権を持たない操作を実行しようとするとスローされます。ネーミング操作を継続するためにコンテキストが必要な地点で、解決されたオブジェクトがコンテキストではない場合に、この例外はスローされます。コンテキスト実装が呼び出された操作をサポートしない場合に、この例外はスローされます。この例外は、現在返されている結果、またはこれまでに返された結果が部分的であること、および操作が完了できないことを示すためにスローされます。このクラスは通信端点のアドレスを表します。このクラスは、ネーミングおよびディレクトリ・システムの外部で検出されるオブジェクトに対する参照を表します。このインタフェースは、Referenceをそれ自体に提供できるオブジェクトによって実装されます。このabstractクラスは、LDAP v3サーバーによって返される場合などの参照に応答して生成される参照例外を表すのに使用されます。この例外は、ディレクトリ・サービスまたはネーム・サービスとの通信を試みた結果、そのサービスが利用できない場合にスローされます。この例外は、メソッドがサイズ関連の制限を超える結果を生成した場合にスローされます。このクラスは、通信端点のアドレスを文字列形式で表します。この例外は、メソッドが指定された制限時間内に終了しない場合にスローされます。