通過更改兩個域模型的包解決了上面的錯誤,我已經發布在我的早期鏈接 Apache camel processing two csv files simultaneously。阿帕奇駱駝同時讀取兩個.csv文件
但是,它給出了另一個錯誤並回滾了兩個.csv文件的處理。 這兩個.csv文件都有兩個處理交換的獨立處理器。
ERROR: [#|2012-06-12T10:23:54.651+1000|SEVERE|glassfish3.0.1|org.apache.camel.processor.DefaultErrorHandler|_ThreadID=35;_ThreadName=Thread-1;|Failed delivery for (MessageId: ID-GEPC7848-52123-1339460612530-0-651 on ExchangeId: ID-GEPC7848-52123-1339460612530-0-658). Exhausted after delivery attempt: 1 caught: java.lang.NullPointerException
抓住:java.lang.NullPointerException。 我會調試這個,並通過處理器,看看有什麼不對。當然,它可能是別的。你有任何線程依賴?共享變量?你可以發佈代碼嗎? –
我調試了這個問題。問題是當第二個文件在綁定中得到處理時(BindyCsvFactory.java類中列出令牌,Map model,int line)方法,模型映射同時具有模型model1和model2,因此當第二個文件文件正在處理的代碼行field.set(modelField,value)它將它設置爲兩個模型,而不是隻有一個。但是,該字段應根據代碼映射到只有一個數據格式模型。如何修復這個? –
問題是,有一個單線程處理兩個文件,所以它會導致問題。我將它分成兩個不同的線程,並希望這將工作。因爲BindyCsvDataFormat方法應該以同步方式執行任何其他數據格式類將被執行。 –