Xử lý lỗi OutOfMemoryException khi fill những report quá lớn

Khi tạo những Report với dữ liệu lớn, JasperReport thường bị tràn bộ nhớ trong quá trình fill data. Bạn sẽ gặp phải exception OutOfMemoryException

Không nên hốt hoảng. JasperReports có tính năng chia nhỏ một report lớn thành những phần nhỏ hơn (gọi là segment) để xử lý. Những segment này được lưu trữ tạm thời trong một thư mục TEMP do bạn chỉ định trên ổ cứng.

Tất cả những gì phải làm thật đơn giản. Bạn chỉ cần set built-in parameter REPORT_VIRTUALIZER
Xin xem đoạn code ví dụ dưới đây:


//Create connection to database server
connection = ConnectionPool.getConnection();

//Create a cache at C:\Temp

JRFileVirtualizer fileVirtualizer = new JRFileVirtualizer(3, "c:\\Temp");

//Set parameter REPORT_VIRTUALIZER
HashMap parameterMap = new HashMap();
parameterMap.put(JRParameter.REPORT_VIRTUALIZER, fileVirtualizer);

//Fill data as usual
JasperFillManager.fillReportToFile("MyReport.jasper", parameterMap,connection);



Chúc thành công!

Hiện có (1) phản hồi: