2014-02-19 166 views
0

我正在尝试使用camel-stax来处理大型xml文件。一个文件内容处理工作正常,但最终失败了以下错误:使用camel-stax进行文件处理无法正常工作

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 

看来,骆驼不会关闭文件输入流,所以处理后,不能将文件移动到目标位置。当然,我可以设置noop = true,我想删除处理过的文件。

我的路线看起来像以下:

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

最初,它是一个有点更复杂,我简化它越好。现在看起来就像这里的最后一个样品http://camel.apache.org/stax

附加说明:我在Windows上执行路由。骆驼版本:2.12.2。

+0

我认为这是一个与Windows相关的错误。我跑了骆驼 - stax组件测试。他们执行成功,但目标/ camle-stax-test.log文件包含相同的回溯:fpaste.org/78642/39282879 –

+0

听起来像输入流需要在camel-stax某处关闭 –

回答

0

所以它看起来像骆驼stax组件中的错误。

我发现了另一种如何处理大型XML文件的方法。我改写了我的路线如下:

<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> 
相关问题