0

プロジェクトで実行時間の長いダウンロード プロセスがあり、20 分近くかかります。このファイルを FtpClient.retrieveFile() 関数でダウンロードします。このダウンロード プロセスは、DownloadVeDeploy.jar という名前の別の jar ファイルを介して行われます。

私の場合、ダウンロード プロセスが開始され、10 分近く後に 2 回目のダウンロードが開始されます。このような私のダウンロードの実装;

for (FTPFile file : ftpFiles) {
                        if (file.isFile()) {
                            output = new BufferedOutputStream(
                                    new FileOutputStream(downloadfolder + "/"
                                            + file.getName()));
                            conn.retrieveFile(
                                    ftpversion + "/" + file.getName(), output);
                            // Writing into target folder for build.xml
                            output.close();
                            System.out.println(file.getName()
                                    + " isimli dosya indirildi.");
                        }
                    }

また、最初のリクエストがすでに実行されている間に2番目のリクエストを通過させないためのフィルターを作成しました。コードは次のとおりです。

private IslemBaslangici() {
    }

    public static void yeniIslem(String versiyonNo) {
        IslemBaslangici islemBaslangic = new IslemBaslangici();
        islemBaslangic.versiyonNo = versiyonNo;
        islemler.add(islemBaslangic);
        sonrakiIslem();
    }

    private static void sonrakiIslem() {
        IslemBaslangici islemBaslangici = null;
        if (islemler.size() > 0) {
            islemBaslangici = islemler.get(0);
            if (!islemBaslangici.calisiyor) {
                islemBaslangici.baslat(islemler.get(0));
                islemler.remove(islemBaslangici);
                sonrakiIslem();
            }
        }
    }

このコード スニペットは、一度に 1 つのプロセスのみを実行させ、他のリクエストをキューに追加します。ここに私の質問があります。ダウンロード プロセスが繰り返されるのはなぜですか? クライアント側からの複数のリクエストに対するフィルターがあるため、クライアント側からではなく、ダウンロードプロセスを1回だけ呼び出します。

追加情報として、私のプロジェクトは Glassfish 3.1.2 で実行されます。

4

0 に答える 0