监视目录以获取Web服务的更改

时间:2013-06-21 20:35:01

标签: java spring-ws

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

首先是限制:Java 1.5 IBM。

情况就是这样:

我有弹簧网络服务,接收带有pdf文件的请求。我需要把这个pdf放到AFP应用程序(非重要性)监视的一些输入目录中。这个AFP应用程序接受pdf,用它做一些事情并将它返回到我需要监视的某个输出目录。监视输出目录需要一些时间,可能需要30秒。另外,我知道我希望在输出目录中出现的确切文件名是什么。如果在30秒内没有任何内容出现,那么我将返回一些故障响应。

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

1 个答案:

答案 0 :(得分:1)

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

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

我们假设outputFileFile,包含生成文件的绝对路径;此方法返回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);
}