【问题标题】:Apache camel reading two .csv files simultaneouslyApache camel 同时读取两个 .csv 文件
【发布时间】: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


【解决方案1】:

Nullpointer 异常始终是错误的良好候选者。您可以尝试使用 DEBUG 日志记录并检查您是否获得完整的堆栈跟踪吗?如果您可以使用堆栈跟踪和描述如何在骆驼 jira 中重现为此创建一个 jira 问题,那就太好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 2022-01-02
    • 2018-06-06
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多