问题:大数据量导出excel时,用xlsx格式,在代码中加入日志打印,发现卡在代码SXSSFworkbook.createSheet()时,无其他异常打印;界面下载的excel显示为0KB,能打开,是空的;
背景:该服务使用tomcat部署的war包,在不同的服务器部署,偶现这个问题,自己的环境无法复现,无法debug;
再次有服务器出现这个问题后,进行了以下测试进行排除:
1.写了一个springboot服务,固定导出10条数据,在该环境运行。能导出数据,即排除服务器环境问题;
2.在war包的代码中加入了导出固定10条数据的接口,在该环境运行。导出文件大小为0,基本可以确认是由tomcat的配置导致的。
3.怀疑tomcat没有临时文件temp或没有权限写入,后来均排除;
问题的转机:
让同事把服务器上的tomcat全部打包发过来,准备在测试的服务器上部署,由于暂时没有服务器用(资源紧张),就自己先翻一翻里面的日志。原先基本所有操作基本日志、异常日志都是查看catalina.out,其他基本都没有有效信息;
看到localhost日志大小不为0,就点进去,然后发现了真相。
[Handler dispatch failed; nested exception is java.awt.AWT