0

タイトルだけではわからないので、詳しく説明します。

まず、制限: Java 1.5 IBM。

これは状況です:

PDFドキュメントを含むリクエストを受け取るSpring Webサービスがあります。このpdfを、 AFPアプリケーション(重要ではない)が監視する入力ディレクトリに配置する必要があります。この AFP アプリケーションは、その pdf を取得し、何かを実行して、監視する必要がある出力ディレクトリに返します。出力ディレクトリの監視には、おそらく 30 秒程度の時間がかかります。また、出力ディレクトリに表示されると予想される正確なファイル名を知っています。30 秒以内に何も表示されない場合は、障害応答を返します。

Web サービスとマルチスレッドに関する知識が乏しいため、どの問題に陥る可能性があるかわかりません。また、インターネットを検索すると、ほとんどの人がディレクトリ監視にwatchserviceを推奨していることに気付きましたが、これはJava 7で導入されました。提案、リンク、アイデアは役に立ちます。

4

1 に答える 1

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);
}
于 2013-06-21T21:01:37.667 に答える