2016-05-10 1 views
0

J'essaie de copier des fichiers d'un dossier local vers un autre dossier local avec le composant JCFS Apache Camel.org.apache.camel.component.file.GenericFileOperationFailedException: Impossible d'obtenir les fichiers Le nom du réseau est introuvable

Voici mon code Java pour la classe MyRouteBuilder:

package abc; 

import org.apache.camel.builder.RouteBuilder; 

public class MyRouteBuilder extends RouteBuilder { 

    public void configure() { 
     long delay = 60 * 60 * 1000L; 
     from("smb://[email protected]/WORKGROUP/home/user/folder?password=secret&delay=" + delay) 
     .to("file://home/otherUser/folder"); 

    // This doesn't work either: 
    //from("smb://localhost;[email protected]/WORKGROUP/home/user/folder?password=secret&delay=" + delay) 
    //  .to("file://home/otherUser/folder"); 
    } 
} 

Après l'exécution de cette voie, exception suivante apparaît:

org.apache.camel.component.file.GenericFileOperationFailedException: Could not get files The network name cannot be found. 
at org.apacheextras.camel.component.jcifs.SmbOperations.listFiles(SmbOperations.java:345) 
at org.apacheextras.camel.component.jcifs.SmbConsumer.pollDirectory(SmbConsumer.java:58) 
at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:131) 
at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175) 
at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: jcifs.smb.SmbException: The network name cannot be found. 
at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563) 
at jcifs.smb.SmbTransport.send(SmbTransport.java:663) 
at jcifs.smb.SmbSession.send(SmbSession.java:238) 
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:176) 
at jcifs.smb.SmbFile.doConnect(SmbFile.java:911) 
at jcifs.smb.SmbFile.connect(SmbFile.java:954) 
at jcifs.smb.SmbFile.connect0(SmbFile.java:880) 
at jcifs.smb.SmbFile.resolveDfs(SmbFile.java:669) 
at jcifs.smb.SmbFile.send(SmbFile.java:773) 
at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1986) 
at jcifs.smb.SmbFile.doEnum(SmbFile.java:1738) 
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1715) 
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1648) 
at org.apacheextras.camel.component.jcifs.DefaultSmbClient.listFiles(DefaultSmbClient.java:161) 
at org.apacheextras.camel.component.jcifs.SmbOperations.listFiles(SmbOperations.java:341) 
... 11 more 

Note 1: J'ai un serveur Samba configuré à mon ordinateur, et Je partage un dossier simple avec quatre fichiers à l'intérieur.

Note 2: J'utilise localhost, juste pour tester. Après avoir obtenu ce travail, je vais utiliser une autre machine IP/domaine.

Nous vous remercions de votre aide!

Répondre

0

Je viens de le faire fonctionner. Mon itinéraire était erroné. Il devrait ressembler à ceci:

package abc; 

import org.apache.camel.builder.RouteBuilder; 

public class MyRouteBuilder extends RouteBuilder { 

    public void configure() { 
     long delay = 60 * 60 * 1000L; 
     from("smb://[email protected]/folder?password=secret&delay=" + delay) 
     .to("file://home/otherUser/folder"); 
    } 
} 

Je remarqué mon erreur exécutant la commande suivante sur un terminal:

smbclient -L localhost 

Cette commande m'a donné que Nom_partage était mon dossier partagé « dossier ».