2012-06-12 132 views
0

通过更改两个域模型的包解决了上面的错误,我已经发布在我的早期链接 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

+0

抓住:java.lang.NullPointerException。 我会调试这个,并通过处理器,看看有什么不对。当然,它可能是别的。你有任何线程依赖?共享变量?你可以发布代码吗? –

+0

我调试了这个问题。问题是当第二个文件在绑定中得到处理时(BindyCsvFactory.java类中列出令牌,Map model,int line)方法,模型映射同时具有模型model1和model2,因此当第二个文件文件正在处理的代码行field.set(modelField,value)它将它设置为两个模型,而不是只有一个。但是,该字段应根据代码映射到只有一个数据格式模型。如何修复这个? –

+0

问题是,有一个单线程处理两个文件,所以它会导致问题。我将它分成两个不同的线程,并希望这将工作。因为BindyCsvDataFormat方法应该以同步方式执行任何其他数据格式类将被执行。 –

回答

0

Nullpointer异常总是一个错误的候选人。你可以用DEBUG日志来试试这个,并检查你是否得到一个完整的堆栈跟踪?如果你可以用堆栈跟踪和描述如何在骆驼吉拉中重现这个问题,可以创建一个jira问题,这将是非常好的。