一、该问题的重现步骤是什么?
增加了maven里面的webscoket坐标
<> <>org.springframework.boot</> <>spring-boot-starter-websocket</> </> <> <>org.apache.tomcat.embed</> <>tomcat-embed-websocket</> </>
2. 创建了一个线程池
{
(name = )
() {
= ThreadPoolTaskExecutor();
.setCorePoolSize();
.setMaxPoolSize();
.setQueueCapacity();
.setThreadNamePrefix();
.setRejectedExecutionHandler(.CallerRunsPolicy());
.setWaitForTasksToCompleteOnShutdown();
.setAwaitTerminationSeconds();
.setTaskDecorator(BladeContextCopyingTaskDecorator());
.initialize();
;
}
{
() {
= () .();
= .();
= .();
() -> {
{
(!= ) {
.(, );
}
.();
.run();
} {
.();
.();
}
};
}
}
}3.在使用线程池的时候报错
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
2025-11-10 09:53:27.297 ERROR 5663 --- [ ModelExec-2] c.z.a.m.s.impl.ModelAsyncTaskService : 异步任务执行异常, taskId: 26c1a521-ccc8-4a37-9cc0-540d73a577bc
java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException:
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at com.zzy.analysis.model.service.impl.ModelAnalysisServiceImpl.execution(ModelAnalysisServiceImpl.java:179) ~[classes/:na]
at com.zzy.analysis.model.service.impl.ModelAsyncTaskService.lambda$executeTaskAsync$0(ModelAsyncTaskService.java:152) ~[classes/:na]
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1804) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java) ~[na:na]
at com.zzy.analysis.model.config.ThreadPoolConfig$BladeContextCopyingTaskDecorator.lambda$decorate$0(ThreadPoolConfig.java:54) ~[classes/:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]
Caused by: org.mybatis.spring.MyBatisSystemException:
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:99) ~[mybatis-spring-3.0.4.jar:3.0.4]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:347) ~[mybatis-spring-3.0.4.jar:3.0.4]
at jdk.proxy2/jdk.proxy2.$Proxy178.selectOne(Unknown Source) ~[na:na]
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:154) ~[mybatis-spring-3.0.4.jar:3.0.4]
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87) ~[mybatis-plus-core-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.8.jar:3.5.8]
at jdk.proxy2/jdk.proxy2.$Proxy271.selectById(Unknown Source) ~[na:na]
at com.baomidou.mybatisplus.extension.service.IService.getById(IService.java:290) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:174) ~[spring-context-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[spring-aop-6.1.15.jar:6.1.15]
at com.zzy.analysis.model.service.impl.ModelInfoServiceImpl$$SpringCGLIB$$0.getById(<generated>) ~[classes/:na]
at com.zzy.analysis.model.service.impl.ModelAnalysisServiceImpl.execution(ModelAnalysisServiceImpl.java:143) ~[classes/:na]
... 7 common frames omitted
Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) ~[mybatis-3.5.16.jar:3.5.16]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:333) ~[mybatis-spring-3.0.4.jar:3.0.4]
... 28 common frames omitted
Caused by: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at org.apache.catalina.connector.RequestFacade.checkFacade(RequestFacade.java:855) ~[tomcat-embed-core-10.1.33.jar:10.1.33]
at org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:245) ~[tomcat-embed-core-10.1.33.jar:10.1.33]
at jakarta.servlet.ServletRequestWrapper.getAttribute(ServletRequestWrapper.java:84) ~[jakarta.servlet-api-6.0.0.jar:6.0.0]
at org.springblade.core.secure.utils.AuthUtil.getUser(AuthUtil.java:102) ~[blade-starter-auth-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.secure.utils.AuthUtil.getUserRole(AuthUtil.java:331) ~[blade-starter-auth-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.secure.utils.AuthUtil.isAdministrator(AuthUtil.java:178) ~[blade-starter-auth-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.tenant.BladeTenantInterceptor.doTenantFilters(BladeTenantInterceptor.java:132) ~[blade-starter-tenant-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.tenant.BladeTenantInterceptor.processPlainSelect(BladeTenantInterceptor.java:76) ~[blade-starter-tenant-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at com.baomidou.mybatisplus.extension.plugins.inner.BaseMultiTableInnerInterceptor.processSelectBody(BaseMultiTableInnerInterceptor.java:56) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.processSelect(TenantLineInnerInterceptor.java:87) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.processParser(JsqlParserSupport.java:90) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:49) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.beforeQuery(TenantLineInnerInterceptor.java:67) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:78) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.16.jar:3.5.16]
at jdk.proxy2/jdk.proxy2.$Proxy218.query(Unknown Source) ~[na:na]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.16.jar:3.5.16]
... 36 common frames omitted
二、你期待的结果是什么?实际看到的又是什么?
想获取到用户上下文,不加webscoket是可以的,但是增加了webscoket就报错了
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
商业版 4.5.0
四、请提供详细的错误堆栈信息,这很重要。
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
2025-11-10 09:53:27.297 ERROR 5663 --- [ ModelExec-2] c.z.a.m.s.impl.ModelAsyncTaskService : 异步任务执行异常, taskId: 26c1a521-ccc8-4a37-9cc0-540d73a577bc
java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException:
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at com.zzy.analysis.model.service.impl.ModelAnalysisServiceImpl.execution(ModelAnalysisServiceImpl.java:179) ~[classes/:na]
at com.zzy.analysis.model.service.impl.ModelAsyncTaskService.lambda$executeTaskAsync$0(ModelAsyncTaskService.java:152) ~[classes/:na]
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1804) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java) ~[na:na]
at com.zzy.analysis.model.config.ThreadPoolConfig$BladeContextCopyingTaskDecorator.lambda$decorate$0(ThreadPoolConfig.java:54) ~[classes/:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]
Caused by: org.mybatis.spring.MyBatisSystemException:
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:99) ~[mybatis-spring-3.0.4.jar:3.0.4]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:347) ~[mybatis-spring-3.0.4.jar:3.0.4]
at jdk.proxy2/jdk.proxy2.$Proxy178.selectOne(Unknown Source) ~[na:na]
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:154) ~[mybatis-spring-3.0.4.jar:3.0.4]
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87) ~[mybatis-plus-core-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.8.jar:3.5.8]
at jdk.proxy2/jdk.proxy2.$Proxy271.selectById(Unknown Source) ~[na:na]
at com.baomidou.mybatisplus.extension.service.IService.getById(IService.java:290) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:174) ~[spring-context-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[spring-aop-6.1.15.jar:6.1.15]
at com.zzy.analysis.model.service.impl.ModelInfoServiceImpl$$SpringCGLIB$$0.getById(<generated>) ~[classes/:na]
at com.zzy.analysis.model.service.impl.ModelAnalysisServiceImpl.execution(ModelAnalysisServiceImpl.java:143) ~[classes/:na]
... 7 common frames omitted
Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
### Cause: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.16.jar:3.5.16]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) ~[mybatis-3.5.16.jar:3.5.16]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:333) ~[mybatis-spring-3.0.4.jar:3.0.4]
... 28 common frames omitted
Caused by: java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
at org.apache.catalina.connector.RequestFacade.checkFacade(RequestFacade.java:855) ~[tomcat-embed-core-10.1.33.jar:10.1.33]
at org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:245) ~[tomcat-embed-core-10.1.33.jar:10.1.33]
at jakarta.servlet.ServletRequestWrapper.getAttribute(ServletRequestWrapper.java:84) ~[jakarta.servlet-api-6.0.0.jar:6.0.0]
at org.springblade.core.secure.utils.AuthUtil.getUser(AuthUtil.java:102) ~[blade-starter-auth-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.secure.utils.AuthUtil.getUserRole(AuthUtil.java:331) ~[blade-starter-auth-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.secure.utils.AuthUtil.isAdministrator(AuthUtil.java:178) ~[blade-starter-auth-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.tenant.BladeTenantInterceptor.doTenantFilters(BladeTenantInterceptor.java:132) ~[blade-starter-tenant-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at org.springblade.core.tenant.BladeTenantInterceptor.processPlainSelect(BladeTenantInterceptor.java:76) ~[blade-starter-tenant-4.5.0.RELEASE.jar:4.5.0.RELEASE]
at com.baomidou.mybatisplus.extension.plugins.inner.BaseMultiTableInnerInterceptor.processSelectBody(BaseMultiTableInnerInterceptor.java:56) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.processSelect(TenantLineInnerInterceptor.java:87) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.processParser(JsqlParserSupport.java:90) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:49) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.beforeQuery(TenantLineInnerInterceptor.java:67) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:78) ~[mybatis-plus-extension-3.5.8.jar:3.5.8]
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.16.jar:3.5.16]
at jdk.proxy2/jdk.proxy2.$Proxy218.query(Unknown Source) ~[na:na]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.16.jar:3.5.16]
... 36 common frames omitted
五、若有更多详细信息,请在下面提供。
扫一扫访问 Blade技术社区 移动端