我正在尝试查看我运行的作业的执行状态,但在某些随机点我收到以下错误:
2015-10-14T14:41:24-0400 1.2.0.RELEASE ERROR qtp195949131-28 rest.RestControllerAdvice - Caught exception while handling a request
org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: java.lang.Integer cannot be cast to java.lang.String (through reference chain: org.springframework.xd.rest.domain.JobExecutionInfoResource["jobExecution"]->org.springframework.batch.core.JobExecution["executionContext"]->org.springframework.batch.item.ExecutionContext["values"]->java.util.concurrent.EntrySetView[0]->java.util.concurrent.MapEntry["value"]->java.util.ArrayList[0]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: java.lang.Integer cannot be cast to java.lang.String (through reference chain: org.springframework.xd.rest.domain.JobExecutionInfoResource["jobExecution"]->org.springframework.batch.core.JobExecution["executionContext"]->org.springframework.batch.item.ExecutionContext["values"]->java.util.concurrent.EntrySetView[0]->java.util.concurrent.MapEntry["value"]->java.util.ArrayList[0])
现在,我说"随机",但事实是我甚至不知道哪个步骤会导致此异常,因为这些是我拥有的唯一日志。工作成功运行似乎没有错误,但这真的让我担心。我已经在网上寻找了好几天的时间,但是我没有看到任何可以帮助我调试这一点的内容,甚至也没有说明可能导致这种情况的原因。有什么帮助吗?
谢谢,N.S。
答案 0 :(得分:0)
好的,所以我发现问题在于我们在执行上下文中序列化一个List>,其中一个内部映射包含一个Integer作为Object而不是String。这似乎导致上下文的反序列化崩溃。
解决方案?不要将该列表存储在执行上下文中(而是将整个列表对象写入文件以便在各个步骤之间进行传输)。