AIX: IBM Java: java.net.Exception socketexception: Connection timed out:pourrait être due à l'adresse invalide
Nous avons vu les exceptions suivantes très fréquemment sur les AIX d'IBM lors de la tentative d'établir une connexion SSL sur notre serveur:
java.net.SocketException: Socket closed
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275(Compiled Code))
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA6275(Compiled Code))
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java(Inlined Compiled Code))
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java(Compiled Code))
at java.io.FilterOutputStream.flush(FilterOutputStream.java(Compiled Code))
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java(Compiled Code))
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java(Compiled Code))
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java(Compiled Code))
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java(Compiled Code))
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java(Compiled Code))
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java(Compiled Code))
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java(Inlined Compiled Code))
at com.eximtechnologies.httptransport.client.ClientTransport.receiveMessages(ClientTransport.java(Compiled Code))
at com.eximtechnologies.httptransport.client.ClientTransport.receiveMessages(ClientTransport.java(Inlined Compiled Code))
at com.eximtechnologies.ecserver.connection.XMSHTTPConnection.checkForNewMessages(XMSHTTPConnection.java(Compiled Code))
at com.eximtechnologies.ecserver.connection.XMSHTTPConnection.timeoutExpired(XMSHTTPConnection.java(Compiled Code))
at com.eximtechnologies.xmd.timer.TimerEvent$1.run(TimerEvent.java(Compiled Code))
De l'erreur, vous penseriez que c'était juste un problème de réseau, mais le client n'avait jamais rencontré le problème avant de parler il y a 2 mois, et autant que je sache, il n'y a pas eu de changement à la disposition du réseau.
Nous recevons assez souvent:
java.net.SocketException: Connection timed out:could be due to invalid address
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:336)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:201)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:188)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.connect(Socket.java:428)
at java.net.Socket.<init>(Socket.java:335)
at java.net.Socket.<init>(Socket.java:210)
at javax.net.ssl.SSLSocket.<init>(Unknown Source)
Je suis penser que c'est un AIX problème, mais je suppose que cela pourrait être un problème de firewall? J'ai aussi vu des gens dans les recherches google, faisant allusion à un problème avec les communes, http, mais je ne pouvais pas voir comment cela pourrait être lié.
Est-ce quelque chose que d'autres ont vu à AIX récemment?
OriginalL'auteur jsight | 2008-10-17
Vous devez vous connecter pour publier un commentaire.
"de java.net.Exception socketexception: Socket fermé" signifie que votre côté fermé le socket. Vous dites que cela se produit lorsque vous tentez d'établir une connexion SSL sur votre serveur. Cependant, la trace de la pile suggère que ce qui se passe quand HTTPClient tente d'écrire une requête HTTP sur un déjà établi la connexion.
Ce qui pourrait se produire si, par exemple, vous avez réussi à faire HTTPClient envoyer une demande via une connexion qui a été fermée en HTTPClient, ou, plus probablement, par un autre code de votre côté. Vérifiez si vous avez accès au socket sous-jacente quelque part. Ou peut-être que le socket est fermé par le protocole SSL/TLS (si je ne me trompe pas, SSL/TLS a son propre protocole de niveau supérieur pour la fermeture de la connexion sous-jacente), mais HTTPClient réussi à ne pas remarquer ce (ne sais pas si c'est possible, mais, disons, que le côté distant a fermé la connexion SSL, mais a été à l'aide de HTTP/1.1 connexions persistantes et n'ai pas une Connection: close réponse).
Vous pouvez résoudre ces questions en analysant le trafic TCP à l'aide de tcpdump/Wireshark. Vous pouvez également commencer un stunnel sur une machine du serveur numéro de port HTTPS, puis de rendre votre code de communiquer avec le serveur sur la plaine HTTP via ce tunnel. Cela devrait vous permettre de voir le trafic HTTP en clair.
"de java.net.Exception socketexception: Connection timed out" signifie que la connexion TCP n'a pas pu être établie en raison d'un dépassement de délai. Peut être que les paquets sont rejetés par un pare-feu. Par exemple, il pourrait être que vous avez besoin pour utiliser un proxy HTTP pour faire les requêtes HTTPS. Il se pourrait aussi que la machine serveur est vraiment occupé ou le réseau est occupé. Encore une fois, je vous suggère d'essayer de tcpdump/Wireshark pour voir ce qui se passe au niveau TCP.
OriginalL'auteur Alexander
J'ai eu des problèmes avec un client http qui ont été corrigées à l'aide d'un multithread connexion. Nous avons fixé par le déplacement de la première à la seconde dans les configurations ci-dessous:
OriginalL'auteur Steve B.
Je ne vais pas être surpris si cela ne fonctionne pas!
le délai spécifié est le délai d'attente pour l'obtention de connexion à partir de la connexion spécifiée gestionnaire et sans réelle prise ou délai d'expiration du serveur qui à des besoins différents de jeu de paramètres.
OriginalL'auteur shivarajan