Closed etertal closed 4 years ago
我还原了一把现场: ` public class DemoJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
XxlJobLogger.log("XXL-JOB, Hello World.");
for (int i = 0; i < 5; i++) {
XxlJobLogger.log("beat at:" + i);
TimeUnit.SECONDS.sleep(2);
}
ResultVO<String> resultVO = new ResultVO<>();
resultVO.success("deleteCreateAdPlan execute end!");
ReturnT<String> result = new ReturnT<>(ReturnT.SUCCESS_CODE, JSON.toJSONString(resultVO));
return result;
}
}
`
ReturnT
public String toJson(Object object) { StringBuilder json = new StringBuilder(); try { this.writeObjItem((String)null, object, json); } catch (Exception var4) { logger.error(var4.getMessage(), var4); } String str = json.toString(); if (str.contains("\n")) { str = str.replaceAll("\\n", "\\\\n"); } if (str.contains("\t")) { str = str.replaceAll("\\t", "\\\\t"); } if (str.contains("\r")) { str = str.replaceAll("\\r", "\\\\r"); } return str; }
遇到类似问题,使用xxl-job-simple-springboot中的httpJobHandler修改,将Http请求的responseMessage(json格式)存入ReturnT的msg中,admin回调接口错误,无法将返回结果存入数据库。
我遇到类似的问题是: 自定义异常中存在中文, client 调用 /callback 接口发送数据时, 中文被错误的编码了, 在 admin 端接收到的数据就是乱码, 然后再转 json 时出现了异常, 而且只要这个错误不解决, 删除 callback 目录下的二进制文件就可以了.
针对这个问题,我刚刚改了一波代码,自测通过,pull request已经提交。
问题已修复,可以参考 @zhipingwu 同学的PR:https://github.com/xuxueli/xxl-job/pull/1345
可以自行调整相关代码,或者等待即将发布下个小版本。
Please answer some questions before submitting your issue. Thanks!
Which version of XXL-JOB do you using?
2.1.1-Release https://github.com/xuxueli/xxl-job/releases/tag/2.1.1 有人遇到下面这个问题吗:
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('d' (code 100)): was n�o�","msg":"ok","success":true}","content":null}}]; line: 1, column: 81]t [Source: [{"logId":2963,"logDateTim":1575126000005,"executeResult":{"code":200,"msg":"{"data":"�� at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:456) at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipComma(ReaderBasedJsonParser.java:2285) at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:912) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:283) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:504) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:104) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276) ... 73 common frames omitted 2019-12-02 15:42:30,207 ERROR [http-nio-9000-exec-5] c.x.job.admin.core.util.JacksonUtil [JacksonUtil.java : 86] Unexpected character ('d' (code 100)): was expecting comma to separate Object entries n�o�","msg":"ok","success":true}","content":null}}]; line: 1, column: 81]t [Source: [{"logId":2963,"logDateTim":1575126000005,"executeResult":{"code":200,"msg":"{"data":"��n�o�","msg":"ok","success":true}","content":null}}]; line: 1, column: 77] (through reference chain: java.util.ArrayList[0]->com.xxl.job.core.biz.model.HandleCallbackParam["executeResult"]) com.fasterxml.jackson.databind.JsonMappingException: Unexpected character ('d' (code 100)): was expecn�o�","msg":"ok","success":true}","content":null}}]; line: 1, column: 81]t [Source: [{"logId":2963,"logDateTim":1575126000005,"executeResult":{"code":200,"msg":"{"data":"��n�o�","msg":"ok","success":true}","content":null}}]; line: 1, column: 77] (through reference chain: java.util.ArrayList[0]->com.xxl.job.core.biz.model.HandleCallbackParam["executeResult"]) at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:388) at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:348) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1611) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:278) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:287) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:259) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2896) at com.xxl.job.admin.core.util.JacksonUtil.readValue(JacksonUtil.java:82) at com.xxl.job.admin.controller.JobApiController.callback(JobApiController.java:53)