com.sun.jndi.ldap.connect.timeout
プロパティを設定して接続タイムアウトを制御したいと考えています。 1000ミリ秒未満の値ではうまく動作しますが、1000より大きい値を設定した場合、タイムアウトは増加しません(1000のままです)。ここでjava jndi ldap接続タイムアウト
は、私は(サーバーがダウンしている)とそれをテストしようとしたコードは次のとおりです。
long start = System.currentTimeMillis();
try
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:10389");
env.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");
env.put(Context.SECURITY_CREDENTIALS, "secret");
env.put("com.sun.jndi.ldap.connect.timeout", "10000");
InitialLdapContext context = new InitialLdapContext(env, null);
} catch (NamingException e)
{
System.out.println("Failed because " + e.getRootCause()
.getMessage() + ". Timeout: " + ((System.currentTimeMillis() - start)) + " ms.");
}
これを引き起こす可能性がありますか?
私は、PROVIDER_URLをlocalhostに設定していることと関係があるようです。私はjava.netクラスでいくつかのデバッグを行い、タイムアウトがネイティブメソッドに正しく渡されたことを発見しました。プロバイダをlocalhost以外のものに変更すると、指定された時間だけ待機します。 – calin014