2017-10-13 10 views
0

Je tente de me connecter à un emplacement SFTP et de télécharger un fichier .zip à l'aide du connecteur Mule SFTP. Il semble très simple de configuration, mais je ne suis pas sûr de ce qui manque dans ma configuration. Je ne suis pas capable de comprendre pourquoi cela ne fonctionne pas pour moi. Quelqu'un peut-il regarder s'il vous plaît et suggérer ce que je devrais changer pour faire du travail? Dans les configurations de flux ci-dessous, je commence par un point de terminaison HTTP (http://localhost:8181/invoice) puis "ftpconnectivityFlow1" est appelé et il vérifie la valeur de la variable "ftp" et en fonction de sa valeur, il va soit à mon emplacement FTP ou SFTP emplacement. quand je mets la variable "ftp" à true cela fonctionne comme prévu, car je peux voir le fichier de l'emplacement FTP est téléchargé dans mon dossier de sortie et supprimé de l'emplacement FTP comme prévu. Quand je le mets à false, il ne donne aucune erreur mais le fichier à l'emplacement SFTP est toujours là ce qui signifie qu'il n'est pas capable de lire le fichier (je devine) et il n'est pas téléchargé dans mon dossier de sortie. Donc, pour un débogage, j'ai ajouté un transformateur personnalisé afin que je puisse inspecter la charge utile. Dans mon transformateur personnalisé, je remarque que lorsqu'il se connecte à l'emplacement FTP, il a des données binaires (tout le nombre), je suppose que c'est mon fichier .zip, mais quand la variable "ftp" est définie sur false, à l'emplacement SFTP dans ce cas la charge utile contient "/ facture" qui est mon chemin relatif http. Donc, mon dossier de sortie contient un fichier avec le nom "null" et tout ce qu'il contient est "/ facture"Impossible de télécharger le fichier depuis l'emplacement SFTP

Toute aide est grandement appréciée.

<flow name="ftpconnectivityFlow1"> 

    <logger message="ftp:#[message.outboundProperties['ftp']]" doc:name="Logger" level="INFO"/> 
    <choice doc:name="Choice"> 
     <when expression="#[message.outboundProperties['ftp']==true]"> 
      <flow-ref name="FTPConnection" doc:name="FTPFileDownloadConnection"/> 
     </when> 
     <otherwise> 
      <flow-ref name="SFTPConnection" doc:name="SFTPFileDownloadConnection"/> 
     </otherwise> 
    </choice> 
</flow> 

<flow name="FTPConnection"> 
    <ftp:inbound-endpoint host="host" port="22" path="abc" user="user" password="password" responseTimeout="10000" doc:name="FTP"/> 
    <custom-transformer class="abc.transformer.CustomeFileTransformer" /> 
    <logger message="connected to FTP" level="INFO" doc:name="Logger"/> 
    <file:outbound-endpoint path="output" outputPattern="#[message.inboundProperties['originalFilename']]" responseTimeout="10000" doc:name="File"/> 
</flow> 

<flow name="SFTPConnection"> 
    <sftp:inbound-endpoint  connector-ref="sftp-default" doc:name="SFTP" responseTimeout="10000" host="host" password="password" path="/Inbound" port="21" user="user"/> 
    <custom-transformer class="abc.transformer.CustomeFileTransformer" /> 

    <logger level="INFO" doc:name="Logger"/> 
    <file:outbound-endpoint path="output" outputPattern="#[message.inboundProperties['originalFilename']]" responseTimeout="10000" doc:name="File"/> 

</flow> 

Répondre

0
<ftp:inbound-endpoint host="host" port="22" ... doc:name="FTP"/> 
... 
<sftp:inbound-endpoint ... port="21" user="user"/> 

Vous pourriez avoir les numéros de port en arrière. FTP fonctionne normalement sur le port 21 et SFTP (SSH) utilise normalement le port 22.

+0

Merci pour votre contribution, après avoir inspecté de près, j'ai remarqué que cette question était la combinaison de port et caractère spécial dans le mot de passe, je ne sais toujours pas pourquoi je n'étais pas obtenir un message d'erreur. Mais finalement, mon problème a été résolu. – Rai