IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[Apache Commons Net] Problème de synchronisation FTP


Sujet :

API standards et tierces Java

  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Points : 2 528
    Points
    2 528
    Par défaut [Apache Commons Net] Problème de synchronisation FTP
    Bonjour,

    J'ai besoin de déposer une série de fichiers sur un serveur (en utilisant les méthodes storeFile() et storeFileStream() de FTPClient), avec des changements de répertoire, de droits d'accès et d'autres opérations.

    Ca ne marche pas bien : certains fichiers ne sont pas transférés du tout, d'autres ont une taille de zéro. Quand j'affiche les résultats des commandes FTP avec FTP.getReplyString(), je vois qu'en fait, mes dépôts de fichiers sont effectués alors que les opérations précédentes (changement de répertoire, de droits, etc) ne sont pas encore terminées, puisque le getReplyString() me renvoie un code de retour correspondant à telle commande.
    Comment peut-on améliorer la synchronisation des transferts, de manière à ce qu'ils se fassent seulement quand le serveur est réellement disponible ?

    Configuration :
    Client : Application Java 6 sur serveur Resin 3.1.3, avec Commons Net 1.4.1 et Commons IO 1.3.1
    Serveur : Serveur FTP vsftpd

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Points : 2 528
    Points
    2 528
    Par défaut
    J'ai noté que c'est le premier fichier transféré après une opération type changement de mode ou de répertoire qui pose un problème.

    Personne n'a d'idée ?

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Donne un peu de code, car pour ma part je n'ai jamais eu de soucis avec la librairie commons net.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Points : 2 528
    Points
    2 528
    Par défaut
    Ok. Voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Document doc = DiaporamaXmlGenerator.generateDiaporamaXml(xdp);
    XMLOutputter outputter = new XMLOutputter();
     
    ftp.changeWorkingDirectory(cadre.getActivation());
    OutputStream out = ftp.storeFileStream(Configuration.getProperty(FRAME_SERVER_XDIAPO_NAME));
    outputter.output(doc, out);
    out.flush();
    out.close();
     
    ftp.setFileType(FTP.BINARY_FILE_TYPE);
    for (XDiapoPlan x : xdp) {
    	if (photoControl.put(x.getPhotoId(),"")==null) {
    		ipi = CommonUtils.parsePhotoVersionForFileInfo(Long.parseLong(x.getPhotoId()));
    		if (ipi.getSubPathKey().equals("")) {
    			path=(new StringBuilder(Configuration.getProperty(RES_PATH))).append(separator).append(ipi.getNode()).append(separator).append(RESOURCE_LEAF_FRAME).append(separator);
    		} else {
    			path=(new StringBuilder(Configuration.getProperty(RES_PATH))).append(separator).append(ipi.getNode()).append(separator).append(ipi.getPath()).append(separator).append(RESOURCE_LEAF_FRAME).append(separator);
    		}
    		fileName = new StringBuilder();
    		fileName.append(EXT_FRAME+ipi.getFileName()).append('.').append(DEFAULT_EXTENSION);
    		path.append(separator).append(fileName);
    		fis = new FileInputStream(path.toString());
    		ok=false;
    		i=0;
    		while (!ok && i<=5) {
    			ok=ftp.storeFile(fileName.toString(),fis); // Et ici, parfois, j'ai des fichiers avec une taille à 0
    			list.add(fileName.toString());
    			i++;
    		}
    		fis.close();
    	}
    }
    Et quand je fais mon storeFile (assez à la fin du code), j'ai parfois (rarement, en fait) des fichiers avec une taille nulle. J'ai l'impression que c'est le premier fichier que je transfère dans ma boucle qui merde, mais pas toujours, loin de là. D'ailleurs un même fichier peut très bien être mal transféré une fois, et bien la fois suivante.

  5. #5
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Il ne faut pas aller si vite ! À chaque étape il faut vérifier que tout s'est bien déroulé, par exemple avec l'appel de completePendingCommand.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

Discussions similaires

  1. Progress Bar avec org.apache.commons.net.ftp
    Par HunTR dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 05/03/2010, 14h18
  2. org.apache.commons.net.ftp.FTPClient méthode changeWorkingDirectory et les accents
    Par qdaemon_fr dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 08/02/2010, 16h59
  3. Java FTP Apache commons net
    Par Ho(c)ine. dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 14/08/2008, 20h28
  4. Envoi FTP de fichier Excel avec org.apache.commons.net.ftp
    Par TomZ dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 22/07/2008, 16h22
  5. [FTP API org.apache.commons.net.ftp] Commande 'Quote'
    Par JnJp28 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/11/2007, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo