Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java jndi ldap连接超时_Java_Ldap_Timeout_Jndi - Fatal编程技术网

java jndi ldap连接超时

java jndi ldap连接超时,java,ldap,timeout,jndi,Java,Ldap,Timeout,Jndi,我想通过设置com.sun.jndi.ldap.connect.timeout属性来控制连接超时。它适用于1000毫秒以下的值,但如果我将值设置为大于1000,则超时不会增加(它保持在1000) 以下是我尝试测试的代码(服务器已关闭): 什么原因可能导致这种情况?如果目标主机响应连接请求时出现错误代码,则一旦收到错误代码,连接就会失败。似乎目标主机已启动,目标LDAP服务未在端口10389侦听。因此,目标主机使用RST响应传入的connect请求,因此立即在客户端引发异常。这是预期的行为。您肯定

我想通过设置
com.sun.jndi.ldap.connect.timeout
属性来控制连接超时。它适用于1000毫秒以下的值,但如果我将值设置为大于1000,则超时不会增加(它保持在1000)

以下是我尝试测试的代码(服务器已关闭):


什么原因可能导致这种情况?

如果目标主机响应连接请求时出现错误代码,则一旦收到错误代码,连接就会失败。似乎目标主机已启动,目标LDAP服务未在端口10389侦听。因此,目标主机使用RST响应传入的connect请求,因此立即在客户端引发异常。这是预期的行为。您肯定不想延迟接收错误?连接超时适用于目标主机暂时无法访问或目标服务非常繁忙的情况。

关于此主题。似乎这个属性并不是这样工作的。也许可以帮上忙。

似乎与我将提供者URL设置为localhost有关。我在java.net类中进行了一些调试,发现超时被正确地传递给了本机方法。将提供程序更改为localhost以外的内容会使其等待指定的时间。
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.");
}