jmikel
Members-
Posts
9 -
Joined
-
Last visited
Content Type
Profiles
Forum
Events
Featured Visualizations
Knowledge Base
Documentation (PDF Downloads)
Blog
Documentation (Test Area)
Documentation
Dr. Jaspersoft Webinar Series
Downloads
Everything posted by jmikel
-
Hi everybody. I try to write JRVirtualPrintPage object into OutputStream in order to wite it to persistence file. But when i read from InputStream, i couldn't load a class which i defined when perform percentile calculation My code at below: private void writePages() throws IOException, JRException { OutputStream pos = new OutputStream(); ObjectOutputStream oos = new ObjectOutputStream(pos); List pages = print.getPages(); numPages = pages == null ? 0 : pages.size(); writeInt(numPages); pageFilePointers = new long[pages.size()]; long pfpOffset = writeObject(pageFilePointers); for(int i = 0; i < numPages; i++) { if (interrupted) return; if (Thread.currentThread().isInterrupted()) { throw new JRException("Current thread interrupted."); } JRVirtualPrintPage vpage = (JRVirtualPrintPage)pages.get(i); oos.writeObject(vpage); for (JRPrintElement jrPrintElement : elements) { oos.writeObject(jrPrintElement); } pageFilePointers[i] = writeBytes(pos.getBytes()); } long saveFP = file.getFilePointer(); file.seek(pfpOffset); writeObject(pageFilePointers); file.seek(saveFP); } private void readPages() throws IOException, ClassNotFoundException { int numPages = readInt(); pageFilePointers = (long[])readObject(); AJPersistenceInputStream pis = new AJPersistenceInputStream(); file.seek(pageFilePointers[0]); byte[] pageBytes = readBytes(); pis.reset(pageBytes); ObjectInputStream ois = new ObjectInputStream(pis); JRVirtualPrintPage page = (JRVirtualPrintPage)ois.readObject(); if (startIndex == endIndex) { for(int i=1; i<=startIndex; i++) page = getPrintPage(pis, ois, i); print.addPage(page); } else { endIndex = Math.min(endIndex, pageFilePointers.length-1); for(int i=0; i<=endIndex; i++) { if (i>0) // else already read page index == 0 page = getPrintPage(pis, ois, i); if (i >= startIndex) print.addPage(page); } } }[/code]I got an error at below: java.lang.ClassNotFoundException: com.alu.vital.vq.jasper.aggregation.AJPercentileAggregator at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:270) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:623) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1610) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:499) at net.sf.jasperreports.engine.fill.JRTemplatePrintText.readObject(JRTemplatePrintText.java:901) at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at java.util.ArrayList.readObject(ArrayList.java:733) at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at java.util.ArrayList.readObject(ArrayList.java:733) at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at java.util.ArrayList.readObject(ArrayList.java:733) at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at java.util.ArrayList.readObject(ArrayList.java:733) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at net.sf.jasperreports.engine.base.ElementsBlock.readObject(VirtualizableElementList.java:567) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at net.sf.jasperreports.engine.base.JRVirtualPrintPage.readObject(JRVirtualPrintPage.java:241) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at com.alu.vital.vq.jasper.reportserver.AJPersistenceManager.readPages(AJPersistenceManager.java:333)[/code]The "com.alu.vital.vq.jasper.aggregation.AJPercentileAggregator" class is class which i defined to perform percentile calculation. It was compiled when build report. Why do i use JRVirtualPrintPage object to write into OutputStream and when read from InputStream, i also cast object to JRVirtualPrintPage type, why does this exception occur? Please help me explain more details this. And how can i fix it? I think it relave to new Virtualize mechanism becaue this issue only occurs when i upgrade Jasper from 3.7.4 to 5.0.1 Thanks, jMikel
-
05/22/2014 12:50:45 [DEBUG] Fill 9654749: Creating sql query executer 05/22/2014 12:50:45 [DEBUG] getQueryString=SELECT C.OmniPCXName OmniPCXName,C.StartTime StartTime,C.EndTime EndTime,C.Node Node,C.DistantID DistantID,C.LocalID LocalID,C.NtwkDly0to40 NtwkDly0to40,C.NtwkDly40to80 NtwkDly40to80,C.NtwkDly80to150 NtwkDly80to150,C.NtwkDly150to250 NtwkDly150to250,C.NtwkDlyOver250 NtwkDlyOver250,C.MaxDelay MaxDelay,C.JitterDepth0 JitterDepth0,C.JitterDepth1 JitterDepth1,C.JitterDepth2 JitterDepth2,C.JitterDepth3 JitterDepth3,C.JitterDepth4 JitterDepth4,C.JitterDepth5 JitterDepth5,C.JitterDepth6 JitterDepth6,C.JitterDepth7 JitterDepth7,C.JitterDepth8 JitterDepth8,C.JitterDepth9 JitterDepth9,C.VN_MOS VN_MOS,C.VN_MOSValid VN_MOSValid,C.Duration Duration,(P.GroupName) GrpName,C.preCalcDelay preCalcDelay,C.CalcDelay CalcDelay,C.CalcJitter CalcJitter,C.DelayName DelayName,C.JitterName JitterName,C.PacketDelivery PacketDelivery,C.PacketDeliveryName PacketDeliveryName,C.MOSName MOSName FROM (SELECT case when (JitterDepth0) + (JitterDepth1) + (JitterDepth2) + (JitterDepth3) + (JitterDepth4) + (JitterDepth5) + (JitterDepth6) + (JitterDepth7) + (JitterDepth8) + (JitterDepth9) != 0 then ( ((JitterDepth0)*10.0)+ ((JitterDepth1)*30.0)+((JitterDepth2)*50.0) + ((JitterDepth3)*70.0) + ((JitterDepth4)*90.0) + ((JitterDepth5)*110.0) + ((JitterDepth6)*130.0) + ((JitterDepth7) * 150.0) + ((JitterDepth8) * 170.0) + ((JitterDepth9) * 190.0) ) / ((JitterDepth0) + (JitterDepth1) + (JitterDepth2) + (JitterDepth3) + (JitterDepth4) + (JitterDepth5) + (JitterDepth6) + (JitterDepth7) + (JitterDepth8) + (JitterDepth9)) else 0 end CalcJitter,NtwkDly80to150,Node,'Average PacketDelivery(%)' PacketDeliveryName,NtwkDly150to250,'Average Jitter(ms)' JitterName,'Average Roundtrip Delay(ms)' DelayName,VN_MOSValid,NtwkDlyOver250,JitterDepth1,VN_MOS,JitterDepth2,JitterDepth0,case when (case when (NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250) != 0 then (((NtwkDly0to40) * 20.0)+((NtwkDly40to80)*60)+((NtwkDly80to150)*115)+((NtwkDly150to250)*200)+((NtwkDlyOver250)*250.0)) / ((NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250)) else 0 end) < (MaxDelay) then (case when (NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250) != 0 then (((NtwkDly0to40) * 20.0)+((NtwkDly40to80)*60)+((NtwkDly80to150)*115)+((NtwkDly150to250)*200)+((NtwkDlyOver250)*250.0)) / ((NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250)) else 0 end) else (MaxDelay) end CalcDelay,MaxDelay,JitterDepth5,JitterDepth6,Duration,JitterDepth3,JitterDepth4,case when (NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250) != 0 then (((NtwkDly0to40) * 20.0)+((NtwkDly40to80)*60)+((NtwkDly80to150)*115)+((NtwkDly150to250)*200)+((NtwkDlyOver250)*250.0)) / ((NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250)) else 0 end preCalcDelay,JitterDepth8,NtwkDly0to40,JitterDepth7,JitterDepth9,LocalID,NtwkDly40to80,100 - (PktLossRatio) PacketDelivery,StartTime,'Average MOS Score' MOSName,DistantID,EndTime,OmniPCXName FROM ( SELECT V.* FROM [192.168.94.112].vnpoller.dba.oxe_voip_normcr V WHERE (V.VN_endTime >= 1400432400 AND V.VN_endTime < 1400691600) ) TBL WHERE (VN_endTime>=1400432400 AND VN_endTime<1400691600) AND ((VN_MOSValid = 1)) AND ((Duration >= 0)) ) C INNER JOIN VART_TMP_1400731758837 P ON ((P.Index2 = C.LocalID OR P.Index2 = C.DistantID)) ORDER BY (P.GroupName) 05/22/2014 12:50:48 [DEBUG] Parameter: key=QUERY, value=SELECT C.OmniPCXName OmniPCXName,C.StartTime StartTime,C.EndTime EndTime,C.Node Node,C.DistantID DistantID,C.LocalID LocalID,C.NtwkDly0to40 NtwkDly0to40,C.NtwkDly40to80 NtwkDly40to80,C.NtwkDly80to150 NtwkDly80to150,C.NtwkDly150to250 NtwkDly150to250,C.NtwkDlyOver250 NtwkDlyOver250,C.MaxDelay MaxDelay,C.JitterDepth0 JitterDepth0,C.JitterDepth1 JitterDepth1,C.JitterDepth2 JitterDepth2,C.JitterDepth3 JitterDepth3,C.JitterDepth4 JitterDepth4,C.JitterDepth5 JitterDepth5,C.JitterDepth6 JitterDepth6,C.JitterDepth7 JitterDepth7,C.JitterDepth8 JitterDepth8,C.JitterDepth9 JitterDepth9,C.VN_MOS VN_MOS,C.VN_MOSValid VN_MOSValid,C.Duration Duration,(P.GroupName) GrpName,C.preCalcDelay preCalcDelay,C.CalcDelay CalcDelay,C.CalcJitter CalcJitter,C.DelayName DelayName,C.JitterName JitterName,C.PacketDelivery PacketDelivery,C.PacketDeliveryName PacketDeliveryName,C.MOSName MOSName FROM (SELECT case when (JitterDepth0) + (JitterDepth1) + (JitterDepth2) + (JitterDepth3) + (JitterDepth4) + (JitterDepth5) + (JitterDepth6) + (JitterDepth7) + (JitterDepth8) + (JitterDepth9) != 0 then ( ((JitterDepth0)*10.0)+ ((JitterDepth1)*30.0)+((JitterDepth2)*50.0) + ((JitterDepth3)*70.0) + ((JitterDepth4)*90.0) + ((JitterDepth5)*110.0) + ((JitterDepth6)*130.0) + ((JitterDepth7) * 150.0) + ((JitterDepth8) * 170.0) + ((JitterDepth9) * 190.0) ) / ((JitterDepth0) + (JitterDepth1) + (JitterDepth2) + (JitterDepth3) + (JitterDepth4) + (JitterDepth5) + (JitterDepth6) + (JitterDepth7) + (JitterDepth8) + (JitterDepth9)) else 0 end CalcJitter,NtwkDly80to150,Node,'Average PacketDelivery(%)' PacketDeliveryName,NtwkDly150to250,'Average Jitter(ms)' JitterName,'Average Roundtrip Delay(ms)' DelayName,VN_MOSValid,NtwkDlyOver250,JitterDepth1,VN_MOS,JitterDepth2,JitterDepth0,case when (case when (NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250) != 0 then (((NtwkDly0to40) * 20.0)+((NtwkDly40to80)*60)+((NtwkDly80to150)*115)+((NtwkDly150to250)*200)+((NtwkDlyOver250)*250.0)) / ((NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250)) else 0 end) < (MaxDelay) then (case when (NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250) != 0 then (((NtwkDly0to40) * 20.0)+((NtwkDly40to80)*60)+((NtwkDly80to150)*115)+((NtwkDly150to250)*200)+((NtwkDlyOver250)*250.0)) / ((NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250)) else 0 end) else (MaxDelay) end CalcDelay,MaxDelay,JitterDepth5,JitterDepth6,Duration,JitterDepth3,JitterDepth4,case when (NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250) != 0 then (((NtwkDly0to40) * 20.0)+((NtwkDly40to80)*60)+((NtwkDly80to150)*115)+((NtwkDly150to250)*200)+((NtwkDlyOver250)*250.0)) / ((NtwkDly0to40) + (NtwkDly40to80) + (NtwkDly80to150) + (NtwkDly150to250) + (NtwkDlyOver250)) else 0 end preCalcDelay,JitterDepth8,NtwkDly0to40,JitterDepth7,JitterDepth9,LocalID,NtwkDly40to80,100 - (PktLossRatio) PacketDelivery,StartTime,'Average MOS Score' MOSName,DistantID,EndTime,OmniPCXName FROM ( SELECT V.* FROM [192.168.94.112].vnpoller.dba.oxe_voip_normcr V WHERE (V.VN_endTime >= 1400432400 AND V.VN_endTime < 1400691600) ) TBL WHERE (VN_endTime>=1400432400 AND VN_endTime<1400691600) AND ((VN_MOSValid = 1)) AND ((Duration >= 0)) ) C INNER JOIN VART_TMP_1400731758837 P ON ((P.Index2 = C.LocalID OR P.Index2 = C.DistantID)) ORDER BY (P.GroupName) 05/22/2014 12:50:48 [DEBUG] Fill 9654749: title 05/22/2014 12:51:52 [DEBUG] Fill 9654749: closing query executer 05/22/2014 12:51:52 [DEBUG] Fill 9654749: notifying of completion 05/22/2014 12:51:52 [DEBUG] Fill 9654749: notified of fill result 05/22/2014 12:51:52 [ERROR] Fill 21261417: exception net.sf.jasperreports.engine.JRException: Unable to get next record. at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:95) at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:866) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:784) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1478) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:129) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:942) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:608) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:205) at java.lang.Thread.run(Thread.java:722) Caused by: java.sql.SQLException: Cannot fetch a row from OLE DB provider "SQLNCLI10" for linked server "192.168.94.112". at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368) The query was executed at 05/22/2014 12:50:45. But at 05/22/2014 12:51:52, the exception was thrown. Caused by: java.sql.SQLException: Cannot fetch a row from OLE DB provider "SQLNCLI10" for linked server "192.168.94.112". Is It the "Query timeout expired" on SQL Server? Can anyone here point me in the direction of how I can both diagnose and fix this? Thanks, Tai Hoang
-
Hi All, Because my report has some contents that be spread page out. hence, I tried to re-format report before export it into pdf. My code below: JRVirtualizer virtualizer = new AJVirtualizer(); JRVirtualizationHelper.setThreadVirtualizer(virtualizer); AJPersistenceManager pmgr = new AJPersistenceManager(); JasperPrint print = pmgr.readPrintFromFile(prtFileName, startPage, endPage); AJLayout ajLayout = new AJLayout(); if(exporter instanceof AJPdfExporter || exporter instanceof AJRtfExporter) { try { print = ajLayout.spreadPageOut(print); } catch (vqException e) { e.printStackTrace(); } } exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); if(this.outputFile != "") { exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, this.outputFile); } else { exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, this.ostream); } exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, contentEncoding); exporter.setParameter(AJExporterParameter.REPORT_FILE_NAME, dbFileName());[/code]AJLayout.java public class AJLayout { private static final Log log = LogFactory.getLog(AJLayout.class); private int pageWidth; private int pageHeight; private int leftPageMargin = 36; private JasperPrint jp; public AJLayout() {} public JasperPrint spreadPageOut(JasperPrint jasperPrint) throws vqException { jp = new JasperPrint(); pageWidth = jasperPrint.getPageWidth(); pageHeight = jasperPrint.getPageHeight(); jp.setPageHeight(pageHeight); jp.setPageWidth(pageWidth); try { log.info("AJLayout: spreadPageOut"); for (int i = 0; i < jasperPrint.getPages().size(); i++) { spreadPageOut(jasperPrint.getPages().get(i)); } } catch (Exception ex) { log.error(ex); } return jp; } public void spreadPageOut(JRPrintPage page) { boolean hasSpread = false; boolean isAdded2NewPage = false; List<JRPrintElement> elements = page.getElements(); int posSpreadX = 0; JRBasePrintPage curPage = new JRBasePrintPage(); JRBasePrintPage spreadPage = null; for (int i = 0; i < elements.size(); i++) { isAdded2NewPage = false; //JRPrintElement element = elements.get(i); int eWidth = elements.get(i).getWidth(); int eX = elements.get(i).getX(); if (eWidth < pageWidth && ((eX + eWidth) > pageWidth)) { JRPrintElement element = elements.get(i); if (!hasSpread) { hasSpread = true; posSpreadX = eX - leftPageMargin; if (spreadPage == null) { spreadPage = new JRBasePrintPage(); } } element.setX(eX - posSpreadX); spreadPage.addElement(element); isAdded2NewPage = true; } else { curPage.addElement(elements.get(i)); } if (isAdded2NewPage == false && (elements.get(i) instanceof JRTemplatePrintFrame)) { JRTemplatePrintFrame returnedFrame = spreadPageOut((JRTemplatePrintFrame) elements.get(i), eX); if (returnedFrame != null) { if (spreadPage == null) { spreadPage = new JRBasePrintPage(); } spreadPage.addElement(returnedFrame); } } } jp.addPage(curPage); if (spreadPage != null) { spreadPageOut(spreadPage); } } public JRTemplatePrintFrame spreadPageOut(JRTemplatePrintFrame frame, int posXOffset) { boolean hasSpread = false; boolean isAdded2NewFrame = false; List<JRPrintElement> elements = frame.getElements(); int posSpreadX = 0; JRTemplatePrintFrame spreadFrame = null; int pageWidthBound = pageWidth - posXOffset; for (int i = 0; i < elements.size(); i++) { isAdded2NewFrame = false; //JRPrintElement element = elements.get(i); int eWidth = frame.getElements().get(i).getWidth(); int eX = frame.getElements().get(i).getX(); if (eWidth < pageWidth && ((eX + eWidth) > pageWidthBound)) { JRPrintElement element = elements.get(i); if (!hasSpread) { hasSpread = true; posSpreadX = eX; if (spreadFrame == null) { spreadFrame = new JRTemplatePrintFrame(new JRTemplateFrame(frame.getOrigin(), frame.getDefaultStyleProvider())); spreadFrame.setY(frame.getY()); spreadFrame.setX(leftPageMargin); } } elements.remove(element); i--; element.setX(eX - posSpreadX); spreadFrame.addElement(element); isAdded2NewFrame = true; } if (isAdded2NewFrame == false && (elements.get(i) instanceof JRTemplatePrintFrame)) { JRTemplatePrintFrame returnedFrame; returnedFrame = spreadPageOut((JRTemplatePrintFrame) elements.get(i), posXOffset + eX); if (returnedFrame != null) { if (spreadFrame == null) { spreadFrame = new JRTemplatePrintFrame(new JRTemplateFrame(frame.getOrigin(), frame.getDefaultStyleProvider())); spreadFrame.setY(frame.getY()); spreadFrame.setX(leftPageMargin); } spreadFrame.addElement(returnedFrame); } } } return spreadFrame; } }[/code] My code run sucessfully with a small report. But when i execute with huge-report (size > 2G). I got an error below: [root@VSDEV-94-35 init.d]# Exception in thread "Thread-0" Exception in thread "pool-2-thread-2" Exception in thread "pool-2-thread-4" Exception in thread "RMI RenewClean-[192.168.94.35:57380]" java.lang.OutOfMemoryError: Java heap space at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(Unknown Source) at java.io.ObjectInputStream$BlockDataInputStream.readUTF(Unknown Source) at java.io.ObjectInputStream.readUTF(Unknown Source) at net.sf.jasperreports.engine.virtualization.StringSerializer.read(StringSerializer.java:61) at net.sf.jasperreports.engine.virtualization.StringSerializer.read(StringSerializer.java:32) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.fill.JRTemplatePrintText.readVirtualized(JRTemplatePrintText.java:1038) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.fill.JRTemplatePrintFrame.readVirtualized(JRTemplatePrintFrame.java:158) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.fill.JRTemplatePrintFrame.readVirtualized(JRTemplatePrintFrame.java:158) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.base.VirtualElementsData.readVirtualized(VirtualElementsData.java:179) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.util.VirtualizationSerializer.readData(VirtualizationSerializer.java:135) at net.sf.jasperreports.engine.util.SwapFileVirtualizerStore.retrieve(SwapFileVirtualizerStore.java:137) at net.sf.jasperreports.engine.fill.StoreVirtualizer.pageIn(StoreVirtualizer.java:58) at net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.requestData(JRAbstractLRUVirtualizer.java:521) at net.sf.jasperreports.engine.base.ElementsBlock.ensureData(VirtualizableElementList.java:463)java.lang.OutOfMemoryError: Java heap space at java.lang.Class.privateGetDeclaredFields(Unknown Source) at java.lang.Class.getDeclaredField(Unknown Source) at java.io.ObjectStreamClass.getDeclaredSUID(Unknown Source) at java.io.ObjectStreamClass.access$700(Unknown Source) at java.io.ObjectStreamClass$2.run(Unknown Source) at java.io.ObjectStreamClass$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.<init>(Unknown Source) at java.io.ObjectStreamClass.lookup(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at sun.rmi.transport.DGCImpl_Stub.dirty(Unknown Source) at sun.rmi.transport.DGCClient$EndpointEntry.makeDirtyCall(Unknown Source) at sun.rmi.transport.DGCClient$EndpointEntry.access$1600(Unknown Source) at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)java.lang.OutOfMemoryError: Java heap space at sun.nio.cs.ISO_8859_1.newEncoder(Unknown Source) at java.lang.StringCoding$StringEncoder.<init>(Unknown Source) at java.lang.StringCoding$StringEncoder.<init>(Unknown Source) at java.lang.StringCoding.encode(Unknown Source) at java.lang.String.getBytes(Unknown Source) at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at java.io.UnixFileSystem.getBooleanAttributes(Unknown Source) at java.io.File.exists(Unknown Source) at org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:77) at org.apache.log4j.helpers.FileWatchdog.run(FileWatchdog.java:108)java.lang.OutOfMemoryError: Java heap space at sun.reflect.GeneratedConstructorAccessor14.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:111) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.fill.JRTemplatePrintFrame.readVirtualized(JRTemplatePrintFrame.java:158) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.fill.JRTemplatePrintFrame.readVirtualized(JRTemplatePrintFrame.java:158) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.base.VirtualElementsData.readVirtualized(VirtualElementsData.java:179) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:119) at net.sf.jasperreports.engine.virtualization.SerializableSerializer.read(SerializableSerializer.java:35) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:137) at net.sf.jasperreports.engine.virtualization.VirtualizationInput.readJRObject(VirtualizationInput.java:105) at net.sf.jasperreports.engine.util.VirtualizationSerializer.readData(VirtualizationSerializer.java:135) at net.sf.jasperreports.engine.util.SwapFileVirtualizerStore.retrieve(SwapFileVirtualizerStore.java:137) at net.sf.jasperreports.engine.fill.StoreVirtualizer.pageIn(StoreVirtualizer.java:58) at net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.requestData(JRAbstractLRUVirtualizer.java:521) at net.sf.jasperreports.engine.base.ElementsBlock.ensureData(VirtualizableElementList.java:463) at net.sf.jasperreports.engine.base.ElementsBlock.ensureDataAndTouch(VirtualizableElementList.java:432) at net.sf.jasperreports.engine.base.ElementsBlock.get(VirtualizableElementList.java:283) at net.sf.jasperreports.engine.base.VirtualizableElementList.get(VirtualizableElementList.java:96) at net.sf.jasperreports.engine.base.VirtualizableElementList.get(VirtualizableElementList.java:54) at com.alu.vital.vq.jasper.exporter.AJLayout.spreadPageOut(AJLayout.java:66)[/code]Please take a look and give to me your idea to fix this issue? Thanks and best regards,
-
Hi hozawa. I don't use Jaspersoft Studio. I override some classes from JasperReport library to report my report. Below list jars that i have used: jasperreports-5.5.1. jar commons-beanutils-1.8.0.jar commons-collections-2.1.1.jar commons-digester-2.1.jar commons-javaflow-20060411.jar commons-logging-1.1.1.jar iText-2.1.7.jar jasperreports-javaflow-5.5.1.jar jcommon-1.0.15.jar jdt-compiler-3.1.1.jar jfreechart-1.0.12.jar poi-3.7-20101029.jar jasperreports-fonts-5.5.1.jar I run on window server (64-bit Operating System). My report still run normally with Jasper Library 5.0.1. Thanks, Tai Hoang
-
Hi all I just upgrade from Jasper5.0.1 to Jasper5.5.1. But when i run report, i got the error: threw a JobExecutionException: org.quartz.JobExecutionException: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser [see nested exception: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser] at com.lucent.vital.vq.reportserver.quartz.QuartzReportJob.execute(QuartzReportJob.java:156) at org.quartz.core.JobRunShell.run(JobRunShell.java:199) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:546) Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:123) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61) at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179) at net.sf.jasperreports.engine.fill.BaseFillHandle.<init>(BaseFillHandle.java:75) at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.<init>(AsynchronousFillHandle.java:98) at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.<init>(AsynchronousFillHandle.java:68) at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.createHandle(AsynchronousFillHandle.java:149) at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.createHandle(AsynchronousFillHandle.java:202) I foundsome solutions on internet: (http://stackoverflow.com/questions/3628302/jasperreports-noclassdeffounderror-exception-on-net-sf-jasperreports-engine-util) "The Sun AWT classes on Unix and Linux have a dependence on the X Window System. When you use these classes, they expect to load X client libraries and be able to talk to an X display server. This makes sense if your client has a GUI; unfortunately, it's required even if your client uses AWT but does not have a GUI (which is my case, generating a report from a web application) The way to bypass this, is setting a system property java.awt.headless=trueon system startup." I tried to set in my app: System.setProperty("java.awt.headless", "true"); But i still got above error. My report still run sucessfully with Jasper 5.0.1 without any changes. Do you have another solution to fix this issue? Thanks, Tai Hoang
-
Hi hozawa. Thanks for your help. I tried divide my reports into multi sub-reports (>1000 subreports). I still use this function for each sub-report to export data. But it still hangs when export for report No. 589. I guess this problem come from java heap memory exception. I still not get any exception. I tried with small report and it executed sucessfully. I set memory for Tomcat at: -xms64M -xmx3072M. I want to export into the OutputStream before i save it into a pdf file. What should i do for my app? I need execute e huge-report. Thanks, Tai Hoang
-
Thanks hozawa
- 2 replies
-
- upgrade
- jasperreports library
-
(and 1 more)
Tagged with:
-
Hi all I have a problem when export a huge-report (size 4GB) I used JRVirtualizer to fill report, and it worked sucessfully. I could get the JasperPrint object after filled the report. But when i export the JasperPrint object out to PDF or XML. It was hung and i couldn't get the report output after a long time. Below is my code to export: private void export(JRExporter exporter) throws JRException, IOException, ClassNotFoundException { JRVirtualizer virtualizer = new AJVirtualizer(); JRVirtualizationHelper.setThreadVirtualizer(virtualizer); //Get JasperPrint object after filled report AJPersistenceManager pmgr = new AJPersistenceManager(); JasperPrint print = pmgr.readPrintFromFile(prtFileName, startPage, endPage); exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, this.ostream); exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, contentEncoding); exporter.setParameter(AJExporterParameter.REPORT_FILE_NAME, dbFileName()); setOutputPages(exporter); //When perform this function, it was hung at here exporter.exportReport(); JRVirtualizationHelper.clearThreadVirtualizer(); virtualizer.cleanup(); this.contentEncoding = (String)exporter.getParameter(JRExporterParameter.CHARACTER_ENCODING); }private void setOutputPages(JRExporter exporter) { if (startPage != -1) { if (endPage == startPage) { exporter.setParameter(AJExporterParameter.TRUE_PAGE_NUMBER, startPage); } else { exporter.setParameter(AJExporterParameter.TRUE_START_PAGE, startPage); exporter.setParameter(AJExporterParameter.TRUE_END_PAGE, endPage); } } exporter.setParameter(AJExporterParameter.REPORT_NUM_PAGES, numPages); } [/code]Who did get this problem like me? If you have any idea, please give me your comments and how can i solve this issue? I use JasperReport 5.0.1 Thanks and best regards, Tai Hoang