如何使用一个talend作业基于ftphost名称连接到多个ftp站点

问题描述

我正在尝试连接到多个ftp站点,但只有ftp主机名(IP地址)在不同的ftp站点之间有所不同,并且用户名,密码,端口,目录都相同,我可以在其中下载和阅读/检索最新文件

我有一个现有流程,它连接到一个特定的ftp站点并进行操作,现在我想使用context变量添加多个ftp站点,并作为同一流的一部分调用不同ftp站点的多个流,仅考虑到主机名会有所不同,其他所有内容都完全相同。

我应该使用trunjob组件还是最简单的方法

enter image description here

解决方法

您是否考虑过使用SFTP? 这是使用JSch库的代码段,您可以修改它以用于多个连接:

private static final String SFTP_SERVER_URL = "server.com";
private static final String SFTP_SERVER_USERNAME = "user";
private static final String SFTP_SERVER_PASSWORD = "pass";
private static final int SFTP_SERVER_PORT = port;
private final static String LOCAL_DOWNLOAD_PATH = "downloads/";

private static ChannelSftp setupSFTP() {
    ChannelSftp channel = null;
    try {
        JSch jsch = new JSch();
        JSch.setConfig("StrictHostKeyChecking","no");
        Session jschSession = jsch.getSession(SFTP_SERVER_USERNAME,SFTP_SERVER_URL);
        jschSession.setPassword(SFTP_SERVER_PASSWORD);
        jschSession.setPort(SFTP_SERVER_PORT);
        jschSession.connect();
        channel = (ChannelSftp) jschSession.openChannel("sftp");
    } catch (JSchException e) {
        e.printStackTrace();
    }
    return channel;
}

public static void downloadFile(String path,String fileName) {
    try {
        ChannelSftp channelSftp = setupSFTP();
        channelSftp.connect();

        // Download file and close connection
        channelSftp.get(path,LOCAL_DOWNLOAD_PATH + fileName);
        channelSftp.exit();
    } catch (SftpException e) {
        e.printStackTrace();
    } catch (JSchException e) {
        e.printStackTrace();
    }
}

public static void uploadFile(String localPath,String remotePath) {
    try {
        ChannelSftp channelSftp = setupSFTP();
        channelSftp.connect();

        // Upload file and close connection
        channelSftp.put(localPath,remotePath);
        channelSftp.exit();
    } catch (SftpException e) {
        e.printStackTrace();
    } catch (JSchException e) {
        e.printStackTrace();
    }
}

您可以具有多种设置功能,每个服务器都有一个。

链接:http://www.jcraft.com/jsch/

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...