不知道标题是否清楚,我会更深入地解释。
首先是限制:Java 1.5 IBM。
情况就是这样:
我有弹簧网络服务,接收带有pdf文件的请求。我需要把这个pdf放到AFP应用程序(非重要性)监视的一些输入目录中。这个AFP应用程序接受pdf,用它做一些事情并将它返回到我需要监视的某个输出目录。监视输出目录需要一些时间,可能需要30秒。另外,我知道我希望在输出目录中出现的确切文件名是什么。如果在30秒内没有任何内容出现,那么我将返回一些故障响应。
由于我对Web服务和多线程的了解不足,我不知道我可能陷入哪些可能的问题。 此外,在互联网上搜索我发现大多数人都推荐使用watchservice进行目录监控,但这是在Java 7中引入的。 任何建议,链接,想法都会有所帮助。
答案 0 :(得分:1)
所以,情景很简单。在主方法中,按顺序执行以下操作:
我们假设outputFile
是File
,包含生成文件的绝对路径;此方法返回void
,适应:
// We poll every second, so...
private static final int SAMPLES = 30;
public void dealWithAFP(whatever, arguments, are, there)
throws WhateverIsNecessary
{
callAfpService(here);
int i = 0;
try {
while (i < SAMPLES) {
TimeUnit.SECONDS.sleep(1);
if (outputFile.exists())
break;
}
throw new WhateverIsNecessary();
} catch (InterruptedException e) {
// Throw it back if the method does, otherwise the minimum is to:
Thread.currentThread().interrupt();
throw new WhateverIsNecessary();
}
dealWithOutputFile(outputFile);
}