我正在尝试调用返回csv文件的Web服务。因此,我调用的每个URL都有一个后缀,该后缀是一个字符串,该字符串表示要生成的csv。然后,我想将此csv保存到文件。有很多东西要生成,所以我要从多个线程中调用此类。每次我运行程序时,完成后返回的文件数量都是不同的。 Web服务运行良好,因为如果我从没有创建文件的浏览器手动调用URL,则将生成并下载csv。总共大约有15,000个URL,由12个线程调用。我在输出控制台中没有收到任何错误,只是说构建成功。通常每次运行大约生成1500-2000个文件,而不是15000。我正在使用apache的通用io FileUtils库将URL保存到文件中。
final int maxRetries = 5;
HistoryWebservice historyWS = new HistoryWebservice();
String history = historyWS.getHistory(maxRetries);
public class HistoryWebservice {
public String getHistory(int maxRetries, String str) throws Exception {
maxRetries = Math.max(0, maxRetries); //Make sure we don't have a negative retry counter
while (maxRetries >= 0) {
try {
FileUtils.copyURLToFile("http://myservice.myservice/" + str, "/tmp/file" + str);
}
catch(<Catch the timeout exception>) {
maxRetries--;
}
}
throw new TimeoutException("Max retries exceeded");
}
}
最佳答案
它是UBUNTU 14.04上允许的打开文件。缺省值为2096,因此使用命令ulimit -n 100000可以正常运行。