【问题标题】:Apache Camel SFTP File Upload is not workingApache Camel SFTP 文件上传不起作用
【发布时间】:2018-01-07 09:26:14
【问题描述】:

程序没有抛出任何异常,但文件被移动到 .camel 文件夹。它没有上传到服务器位置 /tmp/uta/test1 。它还说“上传文件 ubuntu.png 已完成。”。请帮我找出问题所在。

路由器:-

@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.");
    }
}

更新日志详情:-

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.

【问题讨论】:

    标签: java apache-camel


    【解决方案1】:

    文件被移动到运行 Camel 应用程序的计算机上的 .camel 子文件夹。这就是 Camel 文件组件开箱即用的工作方式(请参阅移动选项)。

    您的 Camel 路由中使用的 FTP 组件应该上传文件。那么你有没有在FTP服务器端检查过,是否有文件上传。您可以从 FTP 服务器查看日志。

    您还可以尝试在 Camel 应用程序上启用 DEBUG/TRACE 日志记录,以查看正在记录的内容。

    【讨论】:

    • 感谢回复,我知道第一个文件将被移动到 .camle 但面临的问题是它没有上传到服务器也没有错误。请查找更新的 TRACE 详细信息。
    • 感谢您的调试指导,但在日志中没有显示上传的确切位置。
    【解决方案2】:

    默认情况下,camel 将始终转到/home/username/ 目录,然后将打开您提供的目录路径。 所以,这将是相对路径。
    不能直接提供绝对路径,所以使用/../../tmp/uta/test1stepwise=true

    为了获得更好的洞察力,您还可以尝试: runLoggingLevel=TRACEthrowExceptionOnConnectFailed=true 和其他选项。

    【讨论】:

      【解决方案3】:

      文件已成功上传到服务器,但位置不同。

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

      它正在用户主目录中创建上传目录,这是它在预期目录中不可用的原因。

      【讨论】:

        猜你喜欢
        • 2018-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-25
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        • 2014-07-19
        相关资源
        最近更新 更多