2

SI サンプルをテストしていますが、次の問題が発生しています。

私のSI ver-1.0.4

わかりやすくするために、以下の内容を貼り付けます。

fileCopyDemo-text.xml

    <file:inbound-channel-adapter id="filesIn"
                                  directory="file:${java.io.tmpdir}/spring-integration-samples/input" filename-pattern=".*\.xml">
        <integration:poller id="poller" >
            <integration:interval-trigger initial-delay="1000" interval="2000" fixed-rate="true"/>
        </integration:poller>
    </file:inbound-channel-adapter>

    <integration:service-activator input-channel="filesIn"
                                   output-channel="filesOut"
                                   ref="handler"/>

    <file:outbound-channel-adapter id="filesOut"
                                   directory="file:${java.io.tmpdir}/spring-integration-samples/output"
                                   delete-source-files="true"/>

    <bean id="handler" class="org.springframework.integration.samples.filecopy.Handler"/>

FileBasedCopyTest.java

public class FileBasedFileCopyTest {

    public static void main(String[] args)
    {
        ApplicationContext ac = new ClassPathXmlApplicationContext("/META-INF/spring/integration/fileCopyDemo-file.xml");
    }
}

Handler.java

public class Handler {

    public File handleFile(File input) {
        System.out.println("Copying file: " + input.getAbsolutePath());
        return input;
    }
}

入力フォルダーにファイルを作成する別の Java クラスがあります。

サンプル.java

public static void main(String[] args) {

    try {
        String str = "SomeMoreTextIsHere";
        File newTextFile = new File("C:/Windows/Temp/spring-integration-samples/input/thetextfile.xml");

        FileWriter fw = new FileWriter(newTextFile);
        fw.write(str);
        fw.close();

    } catch (IOException iox) {
        iox.printStackTrace();
    }
}

FileBasedCopyTest を実行しましたが、入力フォルダーをリッスンしています。

質問 Sample.java ファイルをデバッグ モードで実行しています。

FileWriter fw = 新しい FileWriter(newTextFile);

実行されます Handler.java でコントロールを受け取っています。理想的には、ファイルが閉じられたらコントロールを受け取りたいと考えていました。このシナリオをどのように処理しますか?

PS : 私もこれを読みましたが、この場合、ここでの処理方法がわかりません。

4

1 に答える 1

3

これは、Spring Integration を使用しているかどうかに関係なく、一般的な問題です。

一般的なアプローチ (アウトバウンド アダプターで SI によって使用される) は、ファイルを一時的な名前 (例: foo.txt.writing) で書き込み、書き込みfoo.txt後に名前を変更することです。

于 2013-01-05T15:10:44.907 に答える