Réglage du délai de connexion pour FtpClient

Lors de l'utilisation de ftpClient.connect avec un host qui n'a pas de service ftp actif, le délai d'attente se produit seulement après 5 minutes, ce qui est beaucoup trop long.

J'ai essayé le réglage de divers délais d'attente (setDefaultTimeout, setDataTimeout) qui n'a pas changer quoi que ce soit.

FtpClient hérite de SocketClient qui a un setConnectTiemout méthode, mais quand je l'utilise, je reçois un java.lang.NoSuchMethodError: org/apache/commons/net/ftp/FTPClient.setConnectTimeout lors de l'exécution. Ce qui semble être à cause de certains J2SW 1.2 compatibilité, comme décrit à la chambre des Communes-net FAQ:

Q: Comment puis-je définir un délai d'expiration de connexion? http://wiki.apache.org/commons/Net/FrequentlyAskedQuestions

Ils suggèrent de mettre en œuvre un SocketFactory la création d'objets à partir d'une étendue classe Socket à l'aide d'un délai spécifique. Toutefois, lorsque vous essayez d'utiliser ftpClient.setSocketFactory j'ai aussi une java.lang.NoSuchMethodError.

Toute aide comment je peux réduire le délai de connexion?

Mentionnés question dans la FAQ & réponse dit que: Since Commons Net 1.2.x has a J2SE 1.2 compatibility requirement, the ability to specify a connect timeout is not included. sens que les Communes Net 1.2.x les bibliothèques n'ont pas les fonctionnalités souhaitées. Avez-vous besoin spécifiquement que l'ancienne version de bibliothèque? Sinon, essayez plus récente ou la plus récente version de celui-ci par exemple Commons Net 3.1 - là FTPClient classe a setConnectTimeout méthode en train de faire exactement ce dont vous avez besoin comme mentionné dans la réponse(s) ci-dessous.
J'utilise FTPClient 3.1, mon Eclipse montre pas d'erreurs, mais après le déploiement sur le serveur d'application, il donne l'mentionnées erreurs. Mavne construire pom.xml a l'identique de la dépendance de la version, et le fichier ear comprend le bon pot.
C'est vraiment étrange, car cela devrait fonctionner... Avez-vous essayé la connexion à partir de simples public static void main(String[] args) méthode de sous Eclipse? Peut-être que le problème est dans le serveur d'application: il peut fournir une version plus ancienne de Communes Net de la bibliothèque et de l'application déployée peut utiliser FTPClient à partir de là ...
Oui, cela fonctionne. Ceci est en cours d'exécution dans weblogic 10.3.5. Peut-être qu'il est un ancien communes-net dans le classpath en quelque sorte inclus par weblogic lui-même qui a la priorité?
Répondu en réponse

OriginalL'auteur stracktracer | 2012-06-11