FTP サーバーから XML ファイルをダウンロードして解析するために使用するデータベースにフィードのリストがあります。scrpt は、Windows タスク スケジューラを使用して毎日実行される jar ファイルにまとめられます。場合によっては、特定の xml ファイルを取得する際にリクエストが中断されることがあります。これまでのところ、2 週間で約 3 回発生しており、実際のパターンは確認できません。
めちゃくちゃになったら、実行元のコンピューターに移動します。コマンド ウィンドウが開いているのを確認し、xml が完全にダウンロードされる前に停止します。コマンド ウィンドウを閉じてタスクを手動で実行すると、すべて正常に動作します。
xml ファイルをダウンロードするために使用しているコードは次のとおりです。
private void loadFTPFile(String host, String username, String password, String filename, String localFilename){
System.out.println(localFilename);
FTPClient client = new FTPClient();
FileOutputStream fos = null;
try {
client.connect(host);
client.login(username, password);
String localFilenameOutput = createFile(assetsPath + localFilename);
fos = new FileOutputStream(localFilenameOutput);
client.retrieveFile(filename, fos);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null)
fos.close();
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
この関数はループで呼び出され、失敗するとすべてが停止し、スクリプトは次のフィードに進みません。
何が起こっているのかはわかりませんが、接続が失われている可能性がありますが、それが起こっている場合は try/catch がキャッチすると思います。タイムアウトでうまくいくか、スレッドを使用する必要があるかはわかりません(ただし、スレッドを使用したことはありません)
なぜこれが起こっているのか、そして問題を解決するために何ができるのかについて、誰かが私を正しい方向に向けることができますか