【问题标题】:File processing using camel-stax doesn't work properly使用 camel-stax 处理文件无法正常工作
【发布时间】:2014-02-19 16:05:42
【问题描述】:

我正在尝试创建一个使用 camel-stax 处理大型 xml 文件的路由。文件内容处理工作正常,但最终失败并出现以下错误:

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

camel 似乎没有关闭文件输入流,因此在处理后它无法将文件移动到目标位置。当然,我可以设置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。

【问题讨论】:

  • 我认为这是一个与 windows 相关的错误。我进行了骆驼税组件测试。他们执行成功,但 target/camle-stax-test.log 文件包含相同的回溯:fpaste.org/78642/39282879
  • 听起来输入流需要在camel-stax中的某个地方关闭

标签: apache-camel stax


【解决方案1】:

所以它看起来像是 camel-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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2019-03-04
    • 2016-05-14
    • 1970-01-01
    • 2014-07-27
    • 2013-03-25
    • 2014-11-02
    相关资源
    最近更新 更多