2017-09-04 5 views
0

Apache Camelにカスタムsftpコンポーネントを追加して、sftpcomponentに渡す設定オブジェクトにユーザ名、ホスト、ポート、パスワードをラップしようとしています。以下は apache camel:sftpコンポーネントを使用したカスタムsftp設定

は、私が試してみましたコードです:

@Configuration 
class SftpConfig { 
    @Bean("sourceSftp") 
    public SftpComponent getSourceSftpComponent(
      @Qualifier("sftpConfig") 
      SftpConfiguration sftpConfig) throws Exception{ 
     SftpComponent sftpComponent = new SftpComponent(); 
     // not getting way to set the configuration 
     return sftpComponent; 
    } 


    @Bean("sftpConfig") 
    public SftpConfiguration getSftpConfig(
      @Value("${host}") String host, 
      @Value("${port}") int port, 
      @Value("${applicationUserName}") String applicationUserName, 
      @Value("${password}") String password) { 
     SftpConfiguration sftpConfiguration = new SftpConfiguration(); 
     sftpConfiguration.setHost(host); 
     sftpConfiguration.setPort(port); 
     sftpConfiguration.setUsername(applicationUserName); 
     sftpConfiguration.setPassword(password); 
     return sftpConfiguration; 
    } 

} 

//他のクラスでの

from("sourceSftp:<path of directory>") ---custom component 

JMSComponentで同様のアプローチは、私がsourcejmsためのBeanを作成したところ正常に動作しますが、私SftpComponentにはsftpconfigurationの呼び出しが設定されていないため、sftpに対しては実行できません。

答えて

0

キャメルのメンテナーは、個々のコンポーネントにプロパティを設定するための "setXXXConfiguration"メソッドを提供することから離れているようです。特性を提供する「承認」する方法 - SFTPで動作します - 接続URL上でそれらを指定することです:

from ("sftp://host:port/foo?username=foo&password=bar") 
.to (....) 

別のアプローチは、エンドポイントをインスタンス化し、そのプロパティを設定し、使用することですfrom()コールのエンドポイントへの参照。キャメルを構成する方法は非常に豊富です。これはXMLベースの設定のために私には役に立ちます。

<endpoint id="fred" uri="sftp://acme.net/test/"> 
    <property key="username" value="xxxxxxx"/> 
    <property key="password" value="yyyyyyy"/> 
</endpoint> 
<route> 
    <from uri="fred"/> 
    <to uri="log:foo"/> 
</route> 
+0

ありがとうございました。やってみます。 – griffin

関連する問題