CommunicationException [Root exception est ConnectException: Connection timed out]
Je suis de cette exception parfois, tout en essayant de se connecter à Active Directory.
javax.naming.CommunicationException: <ServerIP>:<PORT>
[Root exception is java.net.ConnectException: Connection timed out: connect]
Voici mon code:
DirContext ctx = null;
Properties env = new Properties();
env.put(Context.SECURITY_PRINCIPAL, <Bind_USER>);
env.put(Context.SECURITY_CREDENTIALS, <Bind_USER_PWD>);
env.put(Context.PROVIDER_URL, "ldap://<ServerIP>:<PORT>");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ctx = new InitialDirContext(env);
Obtenir le délai d'attente de connexion exception dans cette ligne ctx = new InitialDirContext(env);
.
Ça n'arrive pas tous les temps, mais il arrive assez souvent.
Conseillez-moi svp, comment se débarrasser de ce problème?
- C'est une solution de contournement que j'ai fait pour surmonter les ci-dessus aléatoire problème: Attraper les CommunicationException, et essayez à nouveau au-moins 3 fois. Espérons qu'il sera utile à quelqu'un comme @futurebaby
Vous devez vous connecter pour publier un commentaire.
Ce qui m'arrive, parfois qu'un. Et parce qu'il n'arrive à ~1% du temps, je doute que c'est l'une des raisons énumérées dans Juned de réponse étant donné que rien ne change dans mon entourage.
Pour moi, il se passe tout à fait au hasard et se fixe sans aucune action de ma part. Ce qui me fait croire que la réponse fournie ici est correct:
Eu le même problème intermittent, bien que la config a souligné un nom de domaine (pas une adresse IP).
Par l'aide de NSLOOKUP, il a découvert qu'une inexistant DC a été inscrit qui a été la cause intermittent des problèmes de connexion.
J'ai commencé à remarquer cela aussi bien quand j'ai troqué l'utilisation d'un Timer avec celle de ScheduledExecutorService pour le lancement de mon Serveur Ldap. Le problème s'est avéré être une condition de course. J'ai changé le temps de lancement de mon Serveur Ldap à partir de 0 retard à un retard de 5 secondes, et il semble avoir résolu le java.net.ConnectException à mon Serveur Ldap.
Condition de course existait ici :
final ScheduledExecutorService ses = Exécuteurs testamentaires.newSingleThreadScheduledExecutor();
ses.scheduleWithFixedDelay(ldapServer, 0, 5, TimeUnit.SECONDES);
Condition de course résolu ici :
final ScheduledExecutorService ses = Exécuteurs testamentaires.newSingleThreadScheduledExecutor();
ses.scheduleWithFixedDelay(ldapServer, 5, 5, TimeUnit.SECONDES);
J'ai été faire la même erreur après le déplacement de plus de LDAPS je suis maintenant en utilisant le Port 636 et j'ai découvert que l'un des Contrôleurs de Domaine du Domaine-je me connecter à est bloqué sur le port 636.
[Root exception java.net.ConnectException: Connection timed out: connect] je