LDAP リポジトリー検索で NameNotFoundException が発生する
LDAP リポジトリーでの検索中に javax.naming.NameNotFoundException が発生した場合は、以下のトラブルシューティング手順に従ってください。
問題点
Microsoft Active Directory など、ルート・ベース検索がサポートされていない LDAP リポジトリーでルート・ベース検索が実行されたために、javax.naming.NameNotFoundException が発生します。
この問題の原因を検証するには、次の例に示す wimconfig.xml ファイルの基本項目を調べます。
<config:baseEntries name="dc=ibm,dc=com" nameInRepository=""/>この例のパラメーターは、WebSphere Application Server 管理コンソールの「リポジトリー参照」設定ページに指定されている値にマップされます。
name パラメーターは、このリポジトリーの Virtual member manager 基本項目であり、Virtual member manager レルム内で固有でなければなりません。 LDAP リポジトリーのセットアップ時に、name パラメーターが「レノム内でこのエントリー・セットを一意的に識別するベース・エントリーの識別名」フィールドに指定されている値にマップされます。
nameInRepository パラメーターは、リポジトリー内の基本項目の LDAP 識別名です。 これは、LDAP ディレクトリー・サーバー内の検索開始点を示します。 nameInRepository パラメーターは、「このリポジトリー内のベース・エントリーの識別名」フィールドに指定されている値にマップされます。
LDAP リポジトリーのセットアップ時に、 「このリポジトリー内の基本項目の識別名 (Distinguished name of a base entry in this repository)」フィールドが空白のままの場合 (例えば nameInRepository="" の場合)、 サブツリーはデフォルトで LDAP リポジトリーのルートになり、これが検索の開始点となります。 この結果、ルート・ベース検索が行われます。 リポジトリーでルート・ベース検索がサポートされていない場合、JNDI 検索を実行すると NameNotFoundException が発生し、さらにこれが原因で Virtual member manager が例外をスローします。
解決方法
Virtual member manager で LDAP リポジトリーを構成するときに、LDAP サーバー検索ルートを設定します。
LDAP リポジトリーでルート・ベース検索がサポートされていない場合は、WebSphere Application Server 管理コンソールの「リポジトリー参照の設定 (Repository reference settings)」ページの「このリポジトリー内の基本項目の識別名 (Distinguished name of a base entry in this repository)」を空白のままにしないでください。