2014-02-19 1 views
0

Я пытаюсь сделать маршрут, который обрабатывает большие XML-файлы, используя camel-stax. Процессинговый содержимое файла работает отлично, но в конце концов он не со следующей ошибкой:Обработка файлов с помощью 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

Я думаю, что это ошибка, связанная с окнами. Я провел тесты компонентов camel-stax. Они выполнялись успешно, но файл target/camle-stax-test.log содержит одни и те же трассировки: fpaste.org/78642/39282879 –

+0

звучит как поток ввода, необходимо закрыть где-нибудь в верблюжьем –

ответ

0

Так что это похоже на ошибку в компоненте 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>