问题描述
此问题出现在tomcat停止时,大概想想就知道,tomcat卸载了应用,但是现在有一些线程没有停止,继续执行代码,执行代码就需要加载类,加载类就要调用WebAppClassLoader,可是此时web应用已经卸载了,加载类的需求不会被满足,此时只能抛出异常,后面一般还跟着一句:The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access,也就是说打印的堆栈跟踪,一方面是为了调试目的,同时也尝试终止抛异常的线程。
解决办法
如果没有代码洁癖,这问题可以不理,一般不会有问题。 如果想解决掉,简单粗暴一些,写一个spring context的停止事件监听,sleep 10秒
@Configuration
public class ApplicationEventListener implements ApplicationListener{
private static Logger logger = LoggerFactory.getLogger(ApplicationEventListener.class);
@Override
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof ContextClosedEvent){
logger.info("ContextClosedEvent...