Jump to content
We've recently updated our Privacy Statement, available here ×

jmikel

Members
  • Posts

    9
  • Joined

  • Last visited

jmikel's Achievements

Apprentice

Apprentice (3/14)

  • Week One Done
  • One Month Later
  • One Year In
  • First Post Rare
  • Conversation Starter Rare

Recent Badges

0

Reputation

  1. 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
  2. 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
  3. 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,
  4. 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
  5. 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
  6. 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
  7. 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
×
×
  • Create New...