Je souhaite contrôler le délai de connexion en définissant la propriété com.sun.jndi.ldap.connect.timeout
. Cela fonctionne bien pour les valeurs inférieures à 1000 ms, mais si je mets des valeurs supérieures à 1000, le timeout n'augmente pas (il reste à 1000).java jndi ldap connexion timeout
Voici le code que j'ai essayé de le tester avec (le serveur est en panne):
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.");
}
Que pourrait faire cela?
Cela semble avoir quelque chose à voir avec le fait que j'ai défini PROVIDER_URL sur localhost. J'ai fait du débogage dans les classes java.net et j'ai découvert que le timeout était passé correctement à une méthode native. Changer le fournisseur à quelque chose d'autre que localhost le fait attendre le temps spécifié. – calin014