【发布时间】:2012-06-13 04:47:48
【问题描述】:
通过更改两个域模型的包解决了我在之前的链接中发布的上述错误 Apache camel processing two csv files simultaneously.
但是,它给出了另一个错误并回滚了两个 .csv 文件的处理。 这两个 .csv 文件都有两个单独的处理器来处理交换。
错误: [#|2012-06-12T10:23:54.651+1000|SEVERE|glassfish3.0.1|org.apache.camel.processor.DefaultErrorHandler|_ThreadID=35;_ThreadName=Thread-1;|(MessageId: ID-交换 ID 上的 GEPC7848-52123-1339460612530-0-651:ID-GEPC7848-52123-1339460612530-0-658)。交付尝试后用尽:1 捕获:java.lang.NullPointerException
【问题讨论】:
-
捕获:java.lang.NullPointerException。我会对此进行调试并逐步检查处理器以查看问题所在。当然,也可能是别的东西。你有任何线程依赖项吗?共享变量?可以贴代码吗?
-
我调试了这个问题。问题是,当在 BindyCsvFactory.java 类中的 bind(List
tokens, Map model, int line) 方法中处理第二个文件时,模型映射同时具有模型 model1 和 model2 所以当第二个文件正在代码行 field.set(modelField, value) 中进行处理,它将它设置为两个模型而不是一个模型。但是,根据代码,该字段应该只映射到一个数据格式模型。如何做我解决这个问题? -
问题是有一个线程处理两个文件,所以它会导致问题。我将把它分成两个不同的线程,希望这会起作用。因为对于 BindyCsvDataFormat,方法应该在以同步方式执行任何其他数据格式类。
-
正如在另一张票上告诉你的那样,使用 2 种不同的绑定数据格式,所以有 2 个 BindyCsvFactory 实例
-
我解决了这个问题。谢谢克劳斯。问题是 Bindy 没有正确识别包名称。我已将包命名为 domainpackage1 和 domain。Bindy 将文件绑定到定义的两个模型分别在这两个不同的包中,它无法区分包名。我更改了包名,现在可以使用了。感谢您的支持和帮助。
标签: java apache-camel