java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)

摘要:
˃stream=ArrayUtils。是否为空(参数)?Stream.empy():数组。流(args);列表logArgs=stream.filter(arg-˃(!

切面打印日志时,参数序列化异常
异常信息:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
原因
joinPoint.getArgs()返回的数组中携带有Request或者Response对象,导致序列化异常。

解决方案:去除Request或者Response对象

//JSONArray json=JSONArray.fromObject(joinPoint.getArgs());
        Object[] args =joinPoint.getArgs();
        Stream<?> stream = ArrayUtils.isEmpty(args) ?Stream.empty() : Arrays.stream(args);
        List<Object> logArgs =stream
                .filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceofHttpServletResponse)))
                .collect(Collectors.toList());
        //过滤后序列化无异常
        JSONArray json=JSONArray.fromObject(logArgs);

相关jar包:

importnet.sf.json.JSONArray;
importorg.apache.commons.lang.ArrayUtils;
importorg.aspectj.lang.JoinPoint;
importorg.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.util.Arrays;
importjava.util.List
importjava.util.stream.Collectors;
import java.util.stream.Stream;

免责声明:文章转载自《java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在VMware下进行的使用ssh服务管理远程主机Sharding-Jdbc 3.1.0遇到的问题与处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

10种常见安全漏洞浅析

1. SQL 注入 1.1 什么是SQL注入? SQL注入是一种代码注入技术,一般被应用于攻击web应用程序。它通过在web应用接口传入一些特殊参数字符,来欺骗应用服务器,执行恶意的SQL命令,以达到非法获取系统信息的目的。它目前是黑客对数据库进行攻击的最常用手段之一。 1.2 SQL注入是如何攻击的? 举个常见的业务场景:在web表单搜索框输入员工名字,...

Android Protobuf应用及原理

前言 之前一直忙于移动端日志SDK Trojan的开源工作,已十分稳定地运行在饿了么团队App中,集成了日志加密和解密功能。哎呀,允许我卖个狗皮膏药,不用不知道,用了就知道,从此爱不释手,Trojan其实是一个很好用的膏药,甚至是一剂不可或缺的良药,能帮助我们跟踪在线用户,解决疑难杂症。 闲话少说,进入今天的正题,Protobuf,可能大家对此很陌生,...

4种解决json日期格式问题的办法

转自:http://www.cnblogs.com/best/p/3537030.html 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下所示: //设置服务器响应的结果为纯文本格式 conte...

Laravel DEBUG模式 反序列化远程代码执行 POP链

前言:复习PHP 环境搭建 影响版本:Ignition<2.5.2 D:phpstudy_proWWWlaravel-CVE-2021-3129 esourcesviewshello.blade.php,创建hello.balde.php,内容如下: <html> <body><h1>hello, {{ $...

序列化 反序列化 MessagePack for C#

阅读目录 快速序列化组件MessagePack介绍 简介 使用 快速开始 分析器 内置的支持类型 对象序列化 DataContract兼容性 序列化不可变对象(序列化构造器) 序列化回调 Union Dynamic(Untyped)反序列化 Object 类型序列化 Typeless 性能 反序列化中每个方法的性能 LZ4压缩 与protobuf,JS...

Spark官方调优文档翻译(转载)

Spark调优由于大部分Spark计算都是在内存中完成的,所以Spark程序的瓶颈可能由集群中任意一种资源导致,如:CPU、网络带宽、或者内存等。最常见的情况是,数据能装进内存,而瓶颈是网络带宽;当然,有时候我们也需要做一些优化调整来减少内存占用,例如将RDD以序列化格式保存(storing RDDs in serialized form)。本文将主要涵盖...