Apache Camel SFTP File Upload is not working

扶醉桌前 提交于 2021-01-28 07:30:11

问题


Program is not throwing any exception but file is moved to .camel folder.It was not uploaded to the server location /tmp/uta/test1 .Also it says "Upload file ubuntu.png is complete.". Please help me to find what is wrong.

Router:-

@Component
public class SampleCamelRouter extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("file:C:/Users/Downloads/test")
        .to("sftp://user@102.108.99.100/tmp/uta/test1?password=password").
         log("Upload file ${file:name} is complete.");
    }
}

Updated Log details:-

route starts..
route ends..

[0     ] - Apache Camel 2.13.0 (CamelContext: camel-1) is starting
[4     ] - Tracing is enabled on CamelContext: camel-1
[5     ] - JMX is enabled
[370   ] - Loaded 175 type converters
[662   ] - AllowUseOriginalMessage is enabled. If access to the original message is not needed, then its recommended to turn this option off as it may improve performance.
[662   ] - StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at http://camel.apache.org/stream-caching.html
[725   ] - Route: route1 started and consuming from: Endpoint[file://C:/Users/Downloads/test]
[725   ] - Total 1 routes, of which 1 is started.
[744   ] - Apache Camel 2.13.0 (CamelContext: camel-1) started in 0.730 seconds
[31453 ] - ID-B20GPF2-59231-1501554606358-0-2 >>> (route1) from(file://C:/Users/Downloads/test) --> sftp://leo@102.108.99.100/tmp/uta/test1?password=xxxxxx <<< Pattern:InOnly, Headers:{CamelFileName=cron.png, CamelFileNameOnly=cron.png, CamelFileRelativePath=cron.png, CamelFileAbsolute=true, CamelFileLength=4214, CamelFileAbsolutePath=C:\Users\Downloads\test\cron.png, breadcrumbId=ID-B20GPF2-59231-1501554606358-0-1, CamelFileLastModified=1497248004376, CamelFileParent=C:\Users\Downloads\test, CamelFilePath=C:\Users\Downloads\test\cron.png, CamelFileNameConsumed=cron.png}, BodyType:org.apache.camel.component.file.GenericFile, Body:[Body is file based: GenericFile[C:\Users\Downloads\test\cron.png]]
[31649 ] - JSCH -> Connecting to 102.108.99.100 port 22
[31685 ] - JSCH -> Connection established
[31703 ] - JSCH -> Remote version string: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
[31703 ] - JSCH -> Local version string: SSH-2.0-JSCH-0.1.50
[31703 ] - JSCH -> CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
[33657 ] - JSCH -> aes256-ctr is not available.
[33657 ] - JSCH -> aes192-ctr is not available.
[33657 ] - JSCH -> aes256-cbc is not available.
[33657 ] - JSCH -> aes192-cbc is not available.
[33657 ] - JSCH -> arcfour256 is not available.
[33658 ] - JSCH -> CheckKexes: diffie-hellman-group14-sha1
[34313 ] - JSCH -> SSH_MSG_KEXINIT sent
[34314 ] - JSCH -> SSH_MSG_KEXINIT received
[34314 ] - JSCH -> kex: server: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
[34314 ] - JSCH -> kex: server: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
[34314 ] - JSCH -> kex: server: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
[34314 ] - JSCH -> kex: server: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
[34314 ] - JSCH -> kex: server: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
[34314 ] - JSCH -> kex: server: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
[34314 ] - JSCH -> kex: server: none,zlib@openssh.com
[34314 ] - JSCH -> kex: server: none,zlib@openssh.com
[34314 ] - JSCH -> kex: server: 
[34314 ] - JSCH -> kex: server: 
[34314 ] - JSCH -> kex: client: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
[34314 ] - JSCH -> kex: client: ssh-rsa,ssh-dss
[34314 ] - JSCH -> kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc
[34315 ] - JSCH -> kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc
[34315 ] - JSCH -> kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
[34315 ] - JSCH -> kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
[34315 ] - JSCH -> kex: client: none
[34315 ] - JSCH -> kex: client: none
[34315 ] - JSCH -> kex: client: 
[34315 ] - JSCH -> kex: client: 
[34315 ] - JSCH -> kex: server->client aes128-ctr hmac-sha1 none
[34315 ] - JSCH -> kex: client->server aes128-ctr hmac-sha1 none
[34337 ] - JSCH -> SSH_MSG_KEXDH_INIT sent
[34337 ] - JSCH -> expecting SSH_MSG_KEXDH_REPLY
[34359 ] - JSCH -> ssh_rsa_verify: signature true
[34364 ] - JSCH -> Permanently added '102.108.99.100' (RSA) to the list of known hosts.
[34365 ] - JSCH -> SSH_MSG_NEWKEYS sent
[34365 ] - JSCH -> SSH_MSG_NEWKEYS received
[34374 ] - JSCH -> SSH_MSG_SERVICE_REQUEST sent
[34375 ] - JSCH -> SSH_MSG_SERVICE_ACCEPT received
[34378 ] - JSCH -> Authentications that can continue: publickey,keyboard-interactive,password
[34379 ] - JSCH -> Next authentication method: publickey
[34380 ] - JSCH -> Authentications that can continue: keyboard-interactive,password
[34380 ] - JSCH -> Next authentication method: keyboard-interactive
[34396 ] - JSCH -> Authentication succeeded (keyboard-interactive).
[34904 ] - Connected to sftp://leo@102.108.99.100:22
[34904 ] - Connected and logged in to: Endpoint[sftp://leo@102.108.99.100/tmp/uta/test1?password=xxxxxx]
[34950 ] - ID-B20GPF2-59231-1501554606358-0-2 >>> (route1) sftp://leo@102.108.99.100/tmp/uta/test1?password=xxxxxx --> log[Upload file ${file:name} is complete.] <<< Pattern:InOnly, Headers:{CamelFileRelativePath=cron.png, breadcrumbId=ID-B20GPF2-59231-1501554606358-0-1, CamelFileLastModified=1497248004376, CamelFileLength=4214, CamelFileName=cron.png, CamelFileNameConsumed=cron.png, CamelFileNameProduced=tmp/uta/test1/cron.png, CamelFileParent=C:\Users\Downloads\test, CamelFileNameOnly=cron.png, CamelFileAbsolute=true, CamelFilePath=C:\Users\Downloads\test\cron.png, CamelFileAbsolutePath=C:\Users\Downloads\test\cron.png}, BodyType:org.apache.camel.component.file.GenericFile, Body:[Body is file based: GenericFile[C:\Users\Downloads\test\cron.png]]
[34950 ] - Upload file cron.png is complete.

回答1:


By default, camel will always go to /home/username/ dir and then will open your provided directory path. So, it will be relative path.
You can not provide absolute path directly, so use /../../tmp/uta/test1 and stepwise=true

For better insights, you can also try: runLoggingLevel=TRACE, throwExceptionOnConnectFailed=true and other options.




回答2:


The file is moved to .camel sub folder on the computer where you run the Camel application. That is how the Camel file component work out of the box (see the move option).

The FTP component that are used in your Camel route is supposed to upload the file. So have you checked on the FTP server side, if there is a file uploaded. You can check the logs from the FTP server.

You can also try enabling DEBUG/TRACE logging on Camel application to see what is being logged.




回答3:


File is uploaded to the Server successfully but location is different.

Location to route :user@102.108.99.100/tmp/uta/test1
Location routed :user@102.108.99.100/home/user/tmp/uta/test1

It is creating the uploading directory inside the user home directory that is the reason it is not available in expected directory.



来源:https://stackoverflow.com/questions/45422111/apache-camel-sftp-file-upload-is-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!