web-dev-qa-db-fra.com

Java 7 empêche les transferts FTP sur Windows Vista et 7 si le pare-feu est activé. Des idées?

Java 7 empêche les transferts FTP sur Windows Vista et 7.

En FTP, avant qu'un fichier ne soit transféré, une commande PORT ou PASV doit être envoyée. Dès que l'une des commandes est envoyée, le Pare-feu Windows ferme le socket qui l'a envoyé. Cela se produit uniquement si le pare-feu est activé et qu’une exception pour Java.exe est absente. Je soupçonne que ce problème est lié à Java 7 utilisant la nouvelle pile IP Vista.

Quelqu'un a-t-il des idées sur la façon de résoudre ou de contourner ce problème? Nous distribuons une bibliothèque Java FTP, nous ne pouvons donc évidemment pas ajouter d'exceptions nous-mêmes.

Exception:

Java.net.SocketException: Permission denied: recv failed

Informations sur la version de JRE:

Java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

SUIVI 1 (14 novembre 2011): Oracle a analysé le problème et a constaté qu'il semblait s'agir d'un bogue du Pare-feu Windows et/ou de la pile IPv6. Ils ont réussi à reproduire le problème avec une application C (c'est-à-dire non-Java) native. Il est donc évident que le bogue n'est pas en Java. Ils ont informé Microsoft, la balle est donc dans leur camp maintenant. Plus de détails peuvent être trouvés à http://bugs.Sun.com/bugdatabase/view_bug.do?bug_id=7077696

FOLLOW-UP 2 (27 juillet 2012): Un contact (très utile) chez Oracle m'a dit que le problème avait été escaladé chez Microsoft. Nous espérons voir des résultats bientôt.

SUIVI 3 (15 août 2012): Notre contact chez Oracle nous a dit que Microsoft avait accepté le bogue et était en train de le hiérarchiser.

SUIVI 4 (21 septembre 2012): Microsoft a produit un correctif qui est actuellement testé par Oracle. Pas de mot sur une date de sortie.

SUIVI 5 (11 octobre 2012): Le succès enfin! Microsoft a publié publiquement un correctif . Ils impliquent que le correctif sera inclus dans une mise à jour logicielle générale à l'avenir:

"Si vous n'êtes pas gravement touché par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle contenant ce correctif."

76
HansA

Nous avons testé le correctif Windows http://support.Microsoft.com/kb/2754804 et avons confirmé qu'il résolvait le problème.

14
lyaffe

Le problème est dû au filtre FTP avec état du pare-feu. Pour contourner le problème, vous pouvez le désactiver en exécutant netsh advfirewall set global StatefulFTP disable avec des droits d'administrateur.

88
Chris

Une autre solution consiste à démarrer la machine virtuelle Java avec:

-Djava.net.preferIPv4Stack=true
15
prunge

J'ai soumis un rapport de bogue à Oracle, voir bugs.Sun.com/bugdatabase/view_bug.do?bug_id=7077696

Ils ont marqué la priorité comme faible, ce qui me fait penser qu’ils ne comprennent pas tout à fait l’ampleur du problème, c’est-à-dire que le FTP est cassé sous Java/Windows. J'ai oublié de l'indiquer explicitement dans le rapport de bogue. Si quelqu'un d'autre pense qu'il devrait avoir une priorité plus élevée, veuillez ajouter un commentaire au rapport de bogue Oracle.

Je viens de remarquer que vous pouvez aussi "voter" pour le bogue, alors votez-le s'il vous plaît si vous êtes d'accord pour dire qu'il est important.

15
HansA

Ce problème peut être démontré sans JDK7, c'est le pare-feu de Windows 7 qui bloque le protocole ftp lorsque l'application utilise des adresses IPv4 mappées IPv6. Voir http://bugs.Sun.com/bugdatabase/view_bug.do?bug_id=7077696 pour plus de détails et des solutions de contournement.

5
Alan

En fait, TFTP sous JDK7 sous Windows 7 a également le même problème, le correctif MS résout le problème FTP, mais ne fonctionne toujours pas pour TFTP. Semble que Oracle devrait signaler le même problème à MS et obtenir un autre correctif pour résoudre le problème TFTP également.

2
Y.Huang

Blogué sur le problème ici: http://podzemski.com/2011/09/12/Java-7-prevents-ftp-transfers-on-windows-when-firewall-is-on/

Peut-être que cela provoquera une prise de conscience supplémentaire du problème.

2
Tommie

Le même bogue a été signalé ici avec un scénario de test: Java 7 Socket Exception Bug forum .

1
Dave

J'ai eu le même problème avec IDE Eclipse Neon, Java 7 et Windows 7 Professional. Essayer de télécharger un fichier PDF sur un serveur FTP. Je l'ai résolu en exécutant la commande suivante dans CMD en tant qu'administrateur:

C: \ Users \ pc01> netsh advfirewall set global StatefulFTP disable
0