4

複数のLDAP/ドメインサーバーがあります。(例:)可用性を確認して、そのうちの1つを使用する必要がありますLDAP://server1.com:389/DC=server1,DC=COMLDAP://server2.com:389/DC=server2,DC=COM

try {
    Hashtable<String, String> env = new Hashtable<String, String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "LDAP://server1.com:389/DC=server1,DC=COM");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, username);
    env.put(Context.SECURITY_CREDENTIALS, password);

    DirContext ctx = new InitialDirContext(env);
} catch(NamingException ex) {
}
4

2 に答える 2

8

次のように、PROVIDER_URL環境プロパティで複数のLDAPサーバーURLを使用できます。

Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.ldap.LdapCtxFactory");

// Specify list of space-separated URLs
env.put(Context.PROVIDER_URL, 
    "ldap://notthere:389/o=JNDITutorial " +
    "ldap://localhost:389/o=JNDITutorial " + 
    "ldap://remotehost/o=JNDITutorial " +
    "ldap://thirdhost:389/o=JNDITutorial");

// Create initial context
DirContext ctx = new InitialDirContext(env);

// See which server was used
System.out.println(ctx.getEnvironment().get(Context.PROVIDER_URL));

// do something useful with ctx
....

どちらのURLが成功した場合でも、コンテキストで使用されます

于 2018-04-06T07:19:30.633 に答える
2

単純な匿名検索を実行して、LDAPサーバーが稼働しているかどうかを確認できます。接続拒否の例外が発生した場合、サーバーはダウンしているため、リスト内の次のサーバーに切り替えて、同じ操作を再度実行できます。

通常、一連のドメインコントローラーの前にロードバランサーが配置され、要求はロードバランサーにルーティングされます。ロードバランサーは、適切なDCを識別し、要求をプロキシします。LBは、リスト内のDCの可用性を定期的にチェックし、DCがダウンした場合は削除し、オンになっている場合は再度チェックします。ご使用の環境にそのようなLBが存在するかどうかについては、IT部門に確認することをお勧めします。

于 2013-01-22T13:17:06.467 に答える