8.3.4. HTTP InitialContext Factory 実装

JNDI ネーミングサービスは HTTP 経由でアクセス可能です。JNDI クライアントから見ると、これは JNDI Context インターフェースを継続利用しており、透過的な変更になります。Context インターフェース経由の操作は、(JMX 呼び出し操作を使ってリクエストを NamingService に渡す) サーブレットへの HTTP ポストに変換されます。HTTP をアクセスプロトコルとして使用する利点には、HTTP を許可する設定のプロキシやファイアウォールを通過するアクセスの他、 セキュリティをベースとした標準サーブレットロールを使って JNDI サービスへのアクセスセキュリティーを保つ機能などがあります。
HTTP で JNDI にアクセスするには、org.jboss.naming.HttpNamingContextFactory をファクトリ実装として利用します。このファクトリのサポート InitialContext 環境プロパティの完全セットは以下の通りです:
  • java.naming.factory.initial: 初期コンテキストファクトリを指定する環境プロパティ名。org.jboss.naming.HttpNamingContextFactoryでなければなりません。
  • java.naming.provider.url (あるいは Context.PROVIDER_URL): これは JNDI ファクトリの HTTP URL に設定する必要があります。完全な HTTP URL は、JBoss サーブレットコンテナーの公開 URLに/invoker/JNDIFactoryを付け加えたものになるでしょう。例は以下の通りです。
    • http://www.jboss.org:8080/invoker/JNDIFactory
    • http://www.jboss.org/invoker/JNDIFactory
    • https://www.jboss.org/invoker/JNDIFactory
    最初の例は、ポート8080 を使ってサーブレットにアクセスし、2番目は標準の HTTP ポート 80 を使い、3番目はSSL 暗号化接続を使い標準の HTTPS ポート443 へアクセスします。
  • java.naming.factory.url.pkgs: 全 JBoss JNDI プロバイダーに対しorg.jboss.naming:org.jnp.interfacesにしなければなりません。このプロパティは、JBoss JNDI プロバイダーのjnp:java: URL コンテキストファクトリの場所を検索するのに必要となります。
HttpNamingContextFactory によって返された JNDI Context 実装は、JMX バスを介して呼出しをNamingServiceへのに転送し、HTTP経由で返信をマーシャルするブリッジサーブレットに呼出しを委譲するプロキシです。このプロキシが動作するには、ブリッジサーブレットの URL は何かを把握している必要があります。この値は、JBoss Webサーバーがよく知られている公開インターフェースの場合、サーバー側ですでにバインドされている場合もあります。JBoss Web サーバーがファイヤウォールやプロキシ1つ以上を介す場合、プロキシは必要なURL はどれか把握できません。このような場合は、プロキシをクライアントVM にて設定する必要のあるシステムプロパティ値と関連付けます。HTTP 上でJNDIの操作に関する詳細情報は、「HTTP 経由で JNDI にアクセス」を参照してください。

注記

クラスターのパーティションがデフォルトのパーティション名を利用する場合、ディスカバリプロセスは他のクラスターを無視します。そのため、複数のクラスターを利用する場合は、一意のパーティション名 props.put("jnp.partitionName", "ClusterBPartition") を指定するようにしてください。