zoukankan      html  css  js  c++  java
  • JSON.toJSONString(joinPoint.getArgs())报错getOutputStream() has already been called for this response

    nested exception is java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)] with root cause
    
    private void addOperationLog(JoinPoint joinPoint, Object res, int time) {
    MethodSignature signature = (MethodSignature)joinPoint.getSignature();
    MpOpLog operationLog = new MpOpLog();
    operationLog.setRunTime(time);
    operationLog.setReturnVal(JSON.toJSONString(res));
    System.out.println("================:"+joinPoint.toString());
    Object[] args = joinPoint.getArgs();
    Object[] arguments = new Object[args.length];
    System.out.println("================:"+args);
    for (int i = 0; i < args.length; i++) {
    if (args[i] instanceof ServletRequest || args[i] instanceof ServletResponse || args[i] instanceof MultipartFile) {
    //ServletRequest不能序列化,从入参里排除,否则报异常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
    //ServletResponse不能序列化 从入参里排除,否则报异常:java.lang.IllegalStateException: getOutputStream() has already been called for this response
    continue;
    }
    arguments[i] = args[i];
    }
    String paramter = "";
    if (arguments != null) {
    try {
    paramter = JSONObject.toJSONString(arguments);
    } catch (Exception e) {
    paramter = arguments.toString();
    }
    }
    System.out.println("================:"+paramter.toString());
    operationLog.setArgs(paramter.toString());
    operationLog.setOpTime(new Date());
    operationLog.setMethod(signature.getDeclaringTypeName() + "." + signature.getName());
    
    String uerid = AppUtil.getJwtParam("userId");
    String userName = AppUtil.getJwtParam("userName");
    
    operationLog.setUserId(StringUtils.defaultIfBlank(uerid, "anonymous"));
    operationLog.setUserName(StringUtils.defaultIfBlank(userName, "anonymous"));
    
    OpLog annotation = signature.getMethod().getAnnotation(OpLog.class);
    if (annotation != null) {
    operationLog.setId(UUID.randomUUID().toString().replace("-", ""));
    operationLog.setLevel(annotation.level());
    operationLog.setContent(getDetail(((MethodSignature)joinPoint.getSignature()).getParameterNames(),
    arguments, annotation));
    operationLog.setOpType(annotation.operationType().getValue());
    operationLog.setOpUnit(annotation.operationUnit());
    }
    
    tmpOpLogService.insert(operationLog);
    }
  • 相关阅读:
    CMSIS_OS中osMailPut 和 osMessagePut 的问题
    网络:W5500抓包TCP segment of a reassembled PDU
    网络:W5500 UDP数据包格式注意事项
    笔记:把编译时间加入到目标文件
    笔记:git和码云
    笔记:git基本操作
    FreeRtos堆栈检测应用
    一个由自增运算符以及C语法顺序细节引起的bug
    高级文件操作
    linux 权限相关
  • 原文地址:https://www.cnblogs.com/hikoukay/p/11305282.html
Copyright © 2011-2022 走看看