0

不知道标题是否清楚,我会更深入地解释它。

首先是限制:Java 1.5 IBM。

这是这种情况:

我有 Spring Web 服务,它接收包含 pdf 文档的请求。我需要将此 pdf 放入AFP 应用程序(不重要)监视的某个输入目录中。此 AFP 应用程序获取该 pdf,对其进行处理并将其返回到我需要监视的某个输出目录。监视输出目录需要一些时间,大概 30 秒。另外,我知道我希望出现在输出目录中的确切文件名是什么。如果 30 秒内什么都没有出现,我会返回一些故障响应。

由于我对 Web 服务和多线程的了解不足,我不知道我可能会遇到哪些问题。此外,在互联网上搜索我发现大多数人推荐使用 watchservice 进行目录监控,但这是在 Java 7 中引入的。任何建议、链接、想法都会有所帮助。

4

1 回答 1

1

所以,场景很简单。在 main 方法中,按顺序执行以下操作:

  • 致电 AFP 服务;
  • 轮询输出文件的目录;
  • 处理输出文件。

我们假设这里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);
}
于 2013-06-21T21:01:37.667 回答