通常、JNDI クライアントは、正しい環境が既に構成されているため、 明示的にプロパティー値を設定して、 これらを InitialContext コンストラクターに渡す必要はないことを前提としています。しかし、JNDI クライアントは、 その環境で識別されたネーム・スペース以外のネーム・スペースにアクセスしなければならない場合があります。 このような場合は、InitialContext コンストラクターが使用する java.naming.provider.url (プロバイダー URL) プロパティーを明示的に設定する必要があります。 プロバイダー URL には、 初期コンテキストを取得するために、 初期コンテキスト・ファクトリーが使用できるブートストラップ・サーバー情報が入っています。 InitialContext コンストラクターに直接渡されたプロパティー値はいずれも、 その環境内の他のところで検出された同じプロパティーの設定より優先されます。
CORBA オブジェクト URL は IIOP URL よりも柔軟性があり、 使用する場合の推奨 URL 形式です。 CORBA オブジェクト URL は、OMG CosNaming Interoperable Naming Specification の一部です。 例えば、corbaname URL には、 初期コンテキストおよびルックアップ名の 情報を含めることができるので、 他の初期コンテキストを明示的に取得せずに、 ルックアップ名として使用することができます。 IIOP URL は、JNDI のレガシー・フォーマットですが、 WebSphere Application Server の 初期コンテキスト・ファクトリーによって、引き続きサポートされています。
以下の例は、これらの URL の使用法を示しています。
次の例は、CORBA オブジェクト URL を示しています。
... import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; ... Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); env.put(Context.PROVIDER_URL, "corbaloc:iiop:myhost.mycompany.com:2809"); Context initialContext = new InitialContext(env); ...
CosNaming JNDI プラグイン実装の初期コンテキスト・ファクトリー (WebSphere Application Server の 初期コンテキスト・ファクトリーを除く) は、 ほとんどの場合、オブジェクト・キー NameService を使用して、 初期コンテキストを取得します。 このようなコンテキスト・ファクトリーを使用して、WebSphere Application Server ネーム・サーバーから初期コンテキストを取得する場合、 初期コンテキストはセル・ルート・コンテキストになります。 サーバーに関連した EJB ホームなどのシステム成果物は、サーバーのサーバー・ルート・コンテキストの下にバインドされ、JNDI オペレーションで使用される名前は修飾されている必要があります。 相対名を使用する場合、初期コンテキストが、ターゲット・オブジェクトのバインドされているサーバー・ルート・コンテキストであることを確認してください。サーバー・ルート・コンテキストを初期コンテキストにするには、オブジェクト・キー NameServiceServerRoot を使用して corbaloc プロバイダー URL を指定します。
この例の CORBA オブジェクト・タイプ URL は、 WebSphere Application Server 以外の JNDI 実装のものです。 この例では、WebSphere Application Server 以外の JNDI 実装によって、CORBA オブジェクト URL が 完全にサポートされていることが前提となります。 オブジェクト・キー NameServiceServerRoot は、初期コンテキストが、指定したサーバーのサーバー・ルート・コンテキストになるように指定します。
... import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; ... Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.somecompany.naming.TheirInitialContextFactory"); env.put(Context.PROVIDER_URL, "corbaname:iiop:myhost.mycompany.com:9810/NameServiceServerRoot"); Context initialContext = new InitialContext(env); ...
修飾名が指定された場合は、NameService のデフォルト・キーを使用することができます。
IIOP タイプの URL は、レガシー・フォーマットであり、CORBA オブジェクト URL ほど柔軟性はありません。 しかし、このタイプの URL はまだサポートされています。 以下の例は、プロバイダー URL として IIOP タイプの URL を示しています。
... import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; ... Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); env.put(Context.PROVIDER_URL, "iiop://myhost.mycompany.com:2809"); Context initialContext = new InitialContext(env); ...