Show Table of Contents
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") を指定するようにしてください。