2017-10-18 1 views
1

Ich versuche, das Ausgangs-Gateway zu verwenden, um Dateien von mehreren SFTP-Server zum Download, wird die Anzahl der SFTP-Server in Eigenschaften konfiguriert (was bedeutet, dass ich die Verbindung dynamisch definieren müssen), meine application.properties:Wie definiert man mehrere SFTP-Verbindungen?

sftp.host=host1,host2 
sftp.user=user1,user2 
sftp.pwd=pwd1,pwd2 

aktuellen verwende ich die Java-Konfiguration als:

@Configuration 

public class SFtpConfig {

static Logger logger = LoggerFactory.getLogger(SFtpConfig.class); 

@Autowired 
SftpServerProperties sftpServerProperties; 

@Autowired 
SftpClientProperties sftpClientProperties; 

@Bean 
public SessionFactory<ChannelSftp.LsEntry> sftpSessionFactory() { 

... 
} 

@Bean(name = "myGateway") 
@ServiceActivator(inputChannel = "sftpChannel") 
public MessageHandler handlerLs() { 

... 
} 

@MessagingGateway 
public interface DownloadGateway { 
    @Gateway(requestChannel = "sftpChannel") 
    List<File> start(String dir); 
} 

@Bean(name="sftpChannel") 
public MessageChannel sftpChannel() { 
    return new DirectChannel(); 
} 

} 

aber diese Konfiguration ist nur für die Verbindung zu einem sftp-Server, also wie kann ich mehrere sftp-Verbindungen mit der application.properties config definieren? ich meine dynamische Anzahl von sessionFactory/Handler/Gateway/channer (einige der Bean hat Annotation, wie solche Art Bohne dynamisch definieren?)

Antwort

0

Sie sollten Kinder ApplicationContext mit dem gleichen Inhalt, aber unterschiedliche Eigenschaften für zu deklarieren ConnectionFactories:

/** 
* Set the parent of this application context. 
* <p>Note that the parent shouldn't be changed: It should only be set outside 
* a constructor if it isn't available when an object of this class is created, 
* for example in case of WebApplicationContext setup. 
* @param parent the parent context 
* @see org.springframework.web.context.ConfigurableWebApplicationContext 
*/ 
void setParent(@Nullable ApplicationContext parent); 
+0

Hallo @Artem, können Sie mehr Tipps geben? Die Anzahl der SFTP-Server wird durch die Eigenschaftendatei entschieden, ich habe BeanDefinitionRegistryPostProcessor versucht, aber keinen Erfolg. –

Verwandte Themen