21.2.2. Enterprise Application Platform 外部で実行されているクライアントの場合

JNDI クライアントは HA-JNDI クラスターを認識しなければなりません。 JNDI サーバーの一覧 (HA-JNDI クラスター内のノードなど) を jndi.properties ファイル内の java.naming.provider.url JNDI 設定に渡すことができます。 各サーバーノードは IP アドレスと JNDI ポート番号によって識別されます。 サーバーノードはコンマで区切ります (サーバーとポートの設定方法については 「JBoss の設定」 を参照)。
java.naming.provider.url=server1:1100,server2:1100,server3:1100,server4:1100
初期化の際、JNP クライアントコードは一覧の各サーバーノードとの通信を 1 つずつ試行します。そして、通信できたサーバーがあった時点で試行を停止します。そして、そのサーバーのノードより HA-JNDI スタブをダウンロードします。

注記

JNP クライアントのルックアッププロセスには負荷分散の動作はありません。 単にプロバイダ一覧を確認してスタブを取得するために利用できる最初のサーバーを使用します。 HA-JNDI プロバイダ一覧はクラスタ内の HA-JNDI ノードのサブセットが含まれている必要があります。 HA-JNDI スタブがダウンロード可能になると、 利用可能なサーバーすべての情報がスタブによって含まれます。 サーバーのセットが含まれるようにし、 最低でも一覧のサーバーが 1 つ使用できるようにすると良いでしょう。
ダウンロードしたスマートスタブには、 現在実行されているノードの一覧と、必要な場合にネーミング要求を負荷分散し別のノードにフェイルオーバーするロジックが含まれます。 また、 サーバーに対して JNDI 呼び出しが行われる度にプロキシインターセプタのターゲット一覧が更新されます (最後の呼び出し後に一覧が変更された場合のみ)。
プロパティの文字列 java.naming.provider.url が空の場合や 表示のサーバーすべてにアクセスできない場合、 JNPクライアントはネットワーク上のマルチキャスト呼び出しより HA-JNDI サーバーをディスカバリしようとします (自動ディスカバリ)。 JNDI サーバーノード上で自動ディスカバリを設定する方法は、 「JBoss の設定」 を参照してください。 自動ディスカバリにより、 設定がなくてもクライアントは有効な HA-JNDI サーバーを取得することができる場合があります。 自動ディスカバリが動作させるには、クライアントとサーバークラスター間のネットワークセグメントを設定し、このようなマルチキャストデータグラムを伝搬するようにしなければなりません。

注記

デフォルトでは、自動ディスカバリ機能はマルチキャストグループのアドレス 230.0.0.4 と 1102 番ポートを使用します。
java.naming.provider.url プロパティだけでなく、 他のプロパティセットも指定することもできます。 次の一覧は、 新規の InitialContext を作成する時に指定できるクラスタリング関係のクライアント側プロパティになります (通常の JNDI と共に使用されるすべての標準的な非クラスタリング関連環境プロパティも使用できます)。
  • java.naming.provider.url: クラスター内の HA-JNDI プロバイダーノード群の IP アドレスとポート番号の一覧を提供します。 クライアントはプロバイダーを 1 つずつ確認し、 最初に応答するプロバイダーを使用します。
  • jnp.disableDiscovery: true が指定されると自動ディスカバリ機能が無効になります。デフォルトでは false が指定されます。
  • jnp.partitionName: 異なるクラスター (パーティション) にバインドされる複数の HA-JNDI サービスが実行されている環境でこのプロパティを使用すると、 クライアントが希望するパーティションのサーバーからの自動ディスカバリ応答のみを受け入れるようにできます。自動ディスカバリ機能を使用しない場合は (jnp.disableDiscovery が true の場合など)、このプロパティは使用されません。 デフォルトでは、 このプロパティは設定されず、クラスターパーティション名に関係なく最初に応答する HA-JNDI サーバーが自動のディスカバリ機能によって選択されます。
  • jnp.discoveryTimeout: 自動ディスカバリパケットへの応答に対するコンテキストの待ち時間を指定します。 デフォルトは 5000 ミリ秒です。
  • jnp.discoveryGroup: 自動ディスカバリに使用されるマルチキャストグループアドレスを指定します。 デフォルト値は 230.0.0.4 です。 サーバー側 HA-JNDI サービスで設定された AutoDiscoveryAddress の値を一致しなければなりません。 サーバー側の HA-JNDI サービスは、 デフォルトでは -u 起動スイッチより指定されたアドレス上でリッスンします。 そのため、 サーバー側で -u が使用される場合 (推奨通り)、 クライアント側で jnp.discoveryGroup を設定する必要があります。
  • jnp.discoveryPort: 自動ディスカバリに使用されるマルチキャストポートを指定します。 デフォルト値は 1102 です。 サーバー側 HA-JNDI サービスで設定された AutoDiscoveryPort の値と一致しなければなりません。
  • jnp.discoveryTTL: 自動ディスカバリ IP マルチキャストパケットの TTL (time-to-live) を指定します。 この値は、ネットワーク装置がマルチキャストパケットをドロップする前にマルチキャストパケットが伝搬できるネットワークホップ数を表します。 名前とは異なり、時間の単位を表すものではありません。