我已经集成了Spring MVC 4和Jasper 6.4.3并且它已成功生成PDF报告但我在Tomcat控制台中遇到了一些可能的内存泄漏问题。
问题在于:
严重:Web应用程序[]使用类型为
的键创建了一个ThreadLocal [java.lang.ThreadLocal](value [java.lang.ThreadLocal@f6d3223])和类型为[org.apache.commons.collections.map.ReferenceMap]的值(value [{WebappClassLoader] 背景: 委托:假 ---------->父类加载器: java.net.URLClassLoader@5a07e868 =com.sun.org.apache.xerces.internal.util.XMLGrammarPoolImpl@5b758d75}])
但是在Web应用程序停止时无法将其删除。线程将随着时间的推移而更新,以避免可能的内存泄漏。
我正在使用spring JasperReportsMultiFormatView
,它在japser-view.xml文件中声明,我已经声明了我的报告和子报告数据源及其位置。
这是我的控制器:
@RequestMapping(value = "/download", method = RequestMethod.GET)
public ModelAndView doSalesMultiReport(HttpServletRequest request,@RequestParam("type") String type,ModelAndView modelAndView, ModelMap model) {
List<StationReportBean> items = new ArrayList<StationReportBean>();
StationReportBean item4 = new StationReportBean();
item4.setId(1);
item4.setReportType("Hourly");
item4.setStationName("Delhi");
item4.setDeviceId(1);
items.add(item4);
List<DeviceReportBean> beans = new ArrayList<DeviceReportBean>();
DeviceReportBean bean1=new DeviceReportBean();
bean1.setId(1);
bean1.setHours("00:00-01:00");
bean1.setVoltageFirstPhase(1.1);
bean1.setVoltageSecondPhase(1.2);
bean1.setVoltageThirdPhase(1.3);
bean1.setVoltageAvg(1.4);
bean1.setCurrentFirstPhase(5.6);
bean1.setCurrentSecondPhase(7.8);
bean1.setCurrentThirdPhase(9.3);
bean1.setCurrentAvg(1.1);
bean1.setLoadFirstPhase(75.6);
bean1.setLoadSecondPhase(7.98);
bean1.setLoadThirdPhase(91.3);
bean1.setLoadAvg(1.81);
bean1.setPowerFactorFirstPhase(54.6);
bean1.setPowerFactorSecondPhase(7.98);
bean1.setPowerFactorThirdPhase(97.3);
bean1.setPowerFactorAvg(11.11);
bean1.setNetRunHour(1.0);
bean1.setNetWattHour(2.0);
beans.add(bean1);
JRDataSource datasource = new JRBeanCollectionDataSource(items);
JRDataSource subDatasource = new JRBeanCollectionDataSource(beans);
model.addAttribute("Datasource", datasource);
model.addAttribute("JasperCustomSubReportDatasource", subDatasource);
try {
BufferedImage image=ImageIO.read(request.getServletContext().getResource("/assets/img/favicon.png"));//when image is in webcontent
model.addAttribute("logo", image );
} catch (IOException e) {
e.printStackTrace();
}
model.addAttribute("format", type);
modelAndView = new ModelAndView("multiReport", model);
return modelAndView;
}
此错误会降低我的开发环境。
是什么让它出错?