問題タブ [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.
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「メタデータストア」) に保存し、ローカルファイルの変更時刻の変更を検出します。
このことから、ローカルファイルが削除されていることが言及されているため、何をすべきかわかりません。
これが私の関連する設定です:
spring-integration - SFTP 権限エラーで再試行する
ファイルのサードパーティ SFTP サーバーをポーリングしている既存の Spring Integration アプリケーションを維持しています。パーミッションまたは 'not found' エラーがスローされることがありますが、これはリモート エンドでの一時的な問題が原因であると思われます。おそらく問題が解決するので、これらのエラーの取得をアプリケーションに再試行してもらいたいと思います。(このケースをカバーする必要がある「問題を再試行する」という要件もあります。)
例えば
大規模なグーグル検索とぐるぐる回った後、Spring Integration でこれを行う方法をまだ理解できません。これが既存の設定です:
編集: 問題は myCompositeFilter にあると思います。例外がスローされたときに、myAcceptOnceFilter 内で rollback() が呼び出されているようには見えません。コンポジットなしで単に myAcceptOnceFilter を使用すると、コードは意図したとおりに機能します (つまり、rollback() が呼び出されます)。問題は次のとおりです。すべての子に対してロールバックを呼び出す CompositeFilter を引き続き使用するにはどうすればよいですか?
ポーラー内に再試行アダプターを配置することを検討しました(編集:これは無関係であることがわかりました):
...しかし、これは警告をスローします
要するに、私は立ち往生しています。この種の sftp 例外で再試行するためのヘルプは、非常にありがたいものです。ありがとう!
編集: SftpPersistentAcceptOnceFileListFilter の言及に追加されました。編集: 問題の場所のように見える CompositeFileLIstFilter の説明を追加しました。
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構造:
java - リモート ロケーションからのファイル ポーリングに関する問題、接続は成功するが、FTP Spring Integration を使用したローカル ディレクトリからの読み取り
インバウンド側を使用しているときに春の統合でFTPを構成しましたリモートパスからファイルを取得できません。常にローカルシステムパスから読み取ります
ftp-inbound-listen-dynamic.xml
FtpInboundChannelResolver.java
FTPListnerService.java
これが私の完全なFTP構成ですが、ローカルディレクトリから読み取ったFTPリモートディレクトリから読み取ることができません
助けてください
spring - Spring 統合 FTP InboundChannelAdapter は、ネットワークのリセット後に停止します
FTP からのファイルへの使用例がdownload
あり、ネットワークのリセット後に ftp インバウンド アダプターが動作を停止するという奇妙な動作があります。問題を再現する手順は次のとおりです。
- アプリケーションを開始
- アプリケーションは、ftp サーバーからローカルへのファイルのダウンロードを開始します
- 定義されたローカル ディレクトリに表示される filename.writing ファイルがあります
- ネットワーク ケーブルを引き抜きます (ネットワークのリセット状況をシミュレートするため)。
- アプリケーションがファイルのダウンロードを停止します (明らかにネットワーク接続がありません)
- ネットワークケーブルを接続します。
- ダウンロードは再開またはリセットされず、アプリケーションは静止したままです..
LOG
この問題を特定する方法はまったくありません。
前もって感謝します!
アップデート
この問題は、タイムアウトを追加することで修正する必要がありますdefSession.setConnectTimeout(Integer.valueOf(env.getProperty("ftp.timeout.connect")));
および以下のコードは、FTP 読み取りクライアントでの動作例です。
コード スニペットは次のとおりです。
java - spring を使用して sftp サーバーから zip ファイルを取得する方法
私はsftpサーバーにたくさんのzipファイルがあるプロジェクトに取り組んでいます。私がやりたいことは、この sftp サーバーに接続し、存在する場合は各 zip ファイルについて、ローカルに転送して解凍し、プロセスを作成することです。
解凍クラスを作成し、プロジェクトのスプリング構成を設定することができました。チュートリアルを探し始めたところ、サンプルの統合スプリングの例が見つかりましたが、2 つのことがわかりませんでした。接続が確立されているという情報を取得するにはどうすればよいですか? また、このサーバーにいくつかの zip ファイルがあることを知るにはどうすればよいですか? 誰かが例を使ってこれを行う方法を説明できれば、それは素晴らしいことです。
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.
pick file from FTP location
process the file.
delete file.
we are facing below exception while spring batch performing above steps.
spring-integration - Spring Integration-FTP はローカル フォルダーと同期する必要があります
私はftpロケーションファイルを持っており、ローカルフォルダーを持っています。初めてファイルがローカルにコピーされ、サーバーを再起動するとき(現在、すでにコピーされたファイルをローカルフォルダーにコピーしています)、すでに存在するファイルを探すべきではありませんlocal であり、新しいファイルのみを検索する必要があります。Spring-Integration ftp を使用してそれを達成することは可能ですか? フィルターも追加しましたが、まだ機能していません。どこが間違っているのか教えてください。