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

Servlets/JSP Java Discussion :

[Servlet][clientFTP] Probleme de chargement de la class FTPClient de l'API apache.commons.net dans un servlet.


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Points : 8
    Points
    8
    Par défaut [Servlet][clientFTP] Probleme de chargement de la class FTPClient de l'API apache.commons.net dans un servlet.
    Bonjour,

    Je poste sur ce forum car j'ai un problème avec l'API apache.commons.net version 3.3.

    j'ai récupéré un code permettant de téléverser un fichier texte de mon application java vers un serveur ftp distant, ce code est présent ci-après :

    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
    34
    35
    36
    37
    38
    39
    40
     
    String server = "monserveurftp.com";
            int port = 21;
            String user = "test";
            String pass = "test";
     
            FTPClient ftpClient = new FTPClient();
            try {
     
                ftpClient.connect(server, port);
                ftpClient.login(user, pass);
     
     
                File firstLocalFile = new File("D:/Users/me/Desktop/Ceci_Est_Un_Test");
     
                String firstRemoteFile = "Ceci_Est_Un_Test";
                InputStream inputStream = new FileInputStream(firstLocalFile);
     
                System.out.println("Start uploading file");
                boolean done = ftpClient.storeFile(firstRemoteFile, inputStream);
                inputStream.close();
                if (done) {
                    System.out.println("fin du transfere.");
                }
     
     
     
    		} catch (IOException ex) {
                System.out.println("Error: " + ex.getMessage());
                ex.printStackTrace();
            } finally {
                try {
                    if (ftpClient.isConnected()) {
                        ftpClient.logout();
                        ftpClient.disconnect();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
    Ce code fonctionne très bien lorsque je l'utilise en tant qu'application Java mais lorsque je l'utilise dans un servlet , l'erreur suivante est renvoyée :

    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
     
    GRAVE: Servlet.service() for servlet [Test] in context with path [/SGAEDemoRoom] threw exception [L''exécution de la servlet a lancé une exception] with root cause
    java.lang.ClassNotFoundException: org.apache.commons.net.ftp.FTPClient
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
    	at myPackage.Test.doGet(Test.java:37)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:745)
    Pour informations, j'ai ajouté la librairie avec Maven, je travail sur Eclipse Néon.2 release 4.6.2 for J2EE avec un JDK 8 et un Tomcat 8.

    Merci par avance du temps que vous prendrez sur ce Problème.

    Cordialement,

    Yanora.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    N'ayant trouvé rien de concluant sur mon problème, j'ai décidé de chercher une solution de contournement.

    j'ai donc utilisé les Objets URL et URLConnection pour créer mon lien FTP pui upload mon fichier.

    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
     
    String ftpUrl = "ftp://%s:%s@%s/%s;type=i";
    String host = "www.myserver.com";
    String user = "tom";
    String pass = "secret";
    String filePath = "E:/Work/Project.zip";
    String uploadPath = "/MyProjects/archive/Project.zip";
     
    ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath);
    System.out.println("Upload URL: " + ftpUrl);
     
    try {
        URL url = new URL(ftpUrl);
        URLConnection conn = url.openConnection();
        OutputStream outputStream = conn.getOutputStream();
        FileInputStream inputStream = new FileInputStream(filePath);
     
        byte[] buffer = new byte[BUFFER_SIZE];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
     
        inputStream.close();
        outputStream.close();
     
        System.out.println("File uploaded");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    Cette solution de substitution fonctionne très bien, c'est pour ça que je cloture cette discution.

    Si certaines personnes veulent essayer de comprendre et de trouver une solution à ce problème, je pense que celui-ci réside dans le classLoader de Catalina qui ne doit pas reconnaitre les Class de la Librairie apache.commons.net.

    Merci à toutes les personnes qui ont lu cette discution.

    Cordialement,

    Yanora.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/11/2015, 12h31
  2. [débutante]Probleme de liens image dans JSP/Servlet
    Par celine31 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/11/2004, 16h51
  3. [ jboss ] probleme de chargement de jar
    Par felix79 dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 27/10/2004, 11h06
  4. [SLACKWARE] Problème de chargement
    Par booboo dans le forum Autres
    Réponses: 2
    Dernier message: 13/08/2004, 02h59
  5. [tomcat]chargement dynamique de classes depuis une webapp
    Par alphamax dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/03/2004, 10h59

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