Question

I'm trying to make a route that will process big xml files using camel-stax. A file content processing works fine, but at the end it fails with a following error:

Caused by: java.io.IOException: Renaming file from: C:\workdir\file.xml to: C:\workdir\.camel\file.xml failed due cannot delete from file: C:\workdir\file.xml after copy succeeded

It seems that camel doesn't close a file input stream, so after processing it cannot move a file to a target location. Of course, I can set noop=true, bit I wanted to remove processed files.

My route looks like following:

<route id="myRoute">
        <from uri="file:{{working_dir}}?include=file.xml" />
        <split streaming="true">
            <ref>staxRecord</ref>
            <to uri="log:test"/>
        </split>
    </route>

Initially it was a little bit more complex and I simplified it as possible. Now it looks just like a last sample from here http://camel.apache.org/stax.

Additional note: I execute the route on Windows. Camel version: 2.12.2.

Was it helpful?

Solution

So it looks like a bug in the camel-stax component.

I've found an alternative way of how to deal with big xml files. I've rewritten my route as following:

<route id="myRoute">
    <from uri="file:{{working_dir}}?include=file.xml&amp;delete=true" />
    <split streaming="true">
        <tokenize token="entry" xml="true"/>
        <unmarshal ref="myJaxb"/>
        <!-- ... -->
    </split>
</route>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top