問題タブ [spring-integration-sftp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1097 参照

java - Spring 統合 SFTP - ローカルで削除されたファイルを再ダウンロードしない

Spring SFTP ドキュメント ( http://docs.spring.io/spring-integration/reference/html/sftp.html ) を読んでも、正常に転送されたファイルの再ダウンロードを防止できるかどうかは完全にはわかりません。

転送中のファイルはサイズが大きく、ローカル タスクによって処理された後、削除される可能性があります。

ただし、Spring SFTP は、それらが (実行時または再起動時に) 削除されたことを検出し、再ダウンロードしています。

私はすでにSftpPersistentAcceptOnceFileListFilter再起動を乗り切るために を使用しています。

上記の説明は、ファイルを取得する前にファイルをフィルタリングすることを指しています。ファイルが取得されると、ファイル システム上のファイルに追加のフィルタが適用されます。デフォルトでは、これはAcceptOnceFileListFilter前述のように状態をメモリに保持し、ファイルの変更時刻を考慮しない です。アプリケーションが処理後にファイルを削除しない限り、アダプターはアプリケーションの再始動後にデフォルトでディスク上のファイルを再処理します。

また、FtpPersistentAcceptOnceFileListFilter を使用するようにフィルターを構成し、リモート ファイルのタイムスタンプが変更された (再フェッチされる) 場合、デフォルトのローカル フィルターはこの新しいファイルの処理を許可しません。

local-filter 属性を使用して、ローカル ファイル システム フィルタの動作を設定します。これらの特定のユース ケースを解決するには、代わりに FileSystemPersistentAcceptOnceFileListFilter をローカル フィルターとして使用できます。このフィルターは、承認されたファイル名と変更されたタイムスタンプを戦略のインスタンスMetadataStore(セクション 9.5「メタデータストア」) に保存し、ローカルファイルの変更時刻の変更を検出します。

このことから、ローカルファイルが削除されていることが言及されているため、何をすべきかわかりません。

これが私の関連する設定です:

0 投票する
1 に答える
530 参照

spring-integration - SFTP 権限エラーで再試行する

ファイルのサードパーティ SFTP サーバーをポーリングしている既存の Spring Integration アプリケーションを維持しています。パーミッションまたは 'not found' エラーがスローされることがありますが、これはリモート エンドでの一時的な問題が原因であると思われます。おそらく問題が解決するので、これらのエラーの取得をアプリケーションに再試行してもらいたいと思います。(このケースをカバーする必要がある「問題を再試行する」という要件もあります。)

例えば

大規模なグーグル検索とぐるぐる回った後、Spring Integration でこれを行う方法をまだ理解できません。これが既存の設定です:

編集: 問題は myCompositeFilter にあると思います。例外がスローされたときに、myAcceptOnceFilter 内で rollback() が呼び出されているようには見えません。コンポジットなしで単に myAcceptOnceFilter を使用すると、コードは意図したとおりに機能します (つまり、rollback() が呼び出されます)。問題は次のとおりです。すべての子に対してロールバックを呼び出す CompositeFilter を引き続き使用するにはどうすればよいですか?

ポーラー内に再試行アダプターを配置することを検討しました(編集:これは無関係であることがわかりました):

...しかし、これは警告をスローします

要するに、私は立ち往生しています。この種の sftp 例外で再試行するためのヘルプは、非常にありがたいものです。ありがとう!

編集: SftpPersistentAcceptOnceFileListFilter の言及に追加されました。編集: 問題の場所のように見える CompositeFileLIstFilter の説明を追加しました。

0 投票する
1 に答える
26786 参照

java - Spring ClassPathResource - 存在しないため開くことができません

更新: Artem Bilan の回答は引き続き正しいとマークされますが、将来の読者のためにこれを指摘する必要があると感じました。@Valueアノテーションの「デフォルト値」の概念を誤解していたようです。私が使用して達成したいと思っていた機能

つまり、application.properties で定義されたファイル パス someProp が例外をスローする (つまり、ファイルが見つからない) 場合、defaultFilePath (つまり、上記のもの) を使用しようとします。デフォルト値の定義が実際に行うことは、プロパティ自体 (someProp) が application.properties ファイルに存在しない (定義されていないかコメントアウトされている) 場合、代わりにデフォルト値を使用しようとすることです。


SSH ファイル転送に Spring Integration Sftp を使用しています。Spring Boot を使用しているため、xml ファイルはありません。オブジェクトを構成する前DefaultSftpSessionFactoryに、sFtp 認証に必要な秘密鍵を含む .txt ファイルを含むリソースを定義します。

以前は、次FileSystemResourceのように使用していました。

これはうまくいきました。ただし、このアプリケーションは最終的にクラウド環境に配置されるため、そのような絶対パスは機能しなくなります。代わりに ClassPathResource を使用しようとしていますが、何を試しても機能しません。これまでのところ、次のことを試しました。

私のディレクトリ構造は次のようになります。

他にもありますが、これは簡易版です。.txtへのパスを認識させる方法を誰かが理解するのを手伝ってくれますか? 私はjava.io.FileNotFoundException: class path resource [resource] cannot be opened because it does not exist何をしようとしても得続けます。

編集: WAR構造:

0 投票する
1 に答える
264 参照

java - リモート ロケーションからのファイル ポーリングに関する問題、接続は成功するが、FTP Spring Integration を使用したローカル ディレクトリからの読み取り

インバウンド側を使用しているときに春の統合でFTPを構成しましたリモートパスからファイルを取得できません。常にローカルシステムパスから読み取ります

ftp-inbound-listen-dynamic.xml

FtpInboundChannelResolver.java

FTPListnerService.java

これが私の完全なFTP構成ですが、ローカルディレクトリから読み取ったFTPリモートディレクトリから読み取ることができません

助けてください

0 投票する
1 に答える
843 参照

spring - Spring 統合 FTP InboundChannelAdapter は、ネットワークのリセット後に停止します

FTP からのファイルへの使用例がdownloadあり、ネットワークのリセット後に ftp インバウンド アダプターが動作を停止するという奇妙な動作があります。問題を再現する手順は次のとおりです。

  1. アプリケーションを開始
  2. アプリケーションは、ftp サーバーからローカルへのファイルのダウンロードを開始します
  3. 定義されたローカル ディレクトリに表示される filename.writing ファイルがあります
  4. ネットワーク ケーブルを引き抜きます (ネットワークのリセット状況をシミュレートするため)。
  5. アプリケーションがファイルのダウンロードを停止します (明らかにネットワーク接続がありません)
  6. ネットワークケーブルを接続します。
  7. ダウンロードは再開またはリセットされず、アプリケーションは静止したままです..
  8. LOGこの問題を特定する方法はまったくありません。

前もって感謝します!

アップデート

この問題は、タイムアウトを追加することで修正する必要がありますdefSession.setConnectTimeout(Integer.valueOf(env.getProperty("ftp.timeout.connect")));

および以下のコードは、FTP 読み取りクライアントでの動作例です。

コード スニペットは次のとおりです。

0 投票する
1 に答える
1153 参照

java - spring を使用して sftp サーバーから zip ファイルを取得する方法

私はsftpサーバーにたくさんのzipファイルがあるプロジェクトに取り組んでいます。私がやりたいことは、この sftp サーバーに接続し、存在する場合は各 zip ファイルについて、ローカルに転送して解凍し、プロセスを作成することです。

解凍クラスを作成し、プロジェクトのスプリング構成を設定することができました。チュートリアルを探し始めたところ、サンプルの統合スプリングの例が見つかりましたが、2 つのことがわかりませんでした。接続が確立されているという情報を取得するにはどうすればよいですか? また、このサーバーにいくつかの zip ファイルがあることを知るにはどうすればよいですか? 誰かが例を使ってこれを行う方法を説明できれば、それは素晴らしいことです。

0 投票する
1 に答える
2941 参照

java - Spring Batch issue : "Problems occurred while synchronizing remote to local directory"

We PUT file on some SFTP server and then run spring batch.when spring batch run below steps were executed.

  1. pick file from FTP location

  2. process the file.

  3. delete file.

we are facing below exception while spring batch performing above steps.

0 投票する
2 に答える
1496 参照

spring-integration - Spring Integration-FTP はローカル フォルダーと同期する必要があります

私はftpロケーションファイルを持っており、ローカルフォルダーを持っています。初めてファイルがローカルにコピーされ、サーバーを再起動するとき(現在、すでにコピーされたファイルをローカルフォルダーにコピーしています)、すでに存在するファイルを探すべきではありませんlocal であり、新しいファイルのみを検索する必要があります。Spring-Integration ftp を使用してそれを達成することは可能ですか? フィルターも追加しましたが、まだ機能していません。どこが間違っているのか教えてください。