こんにちは私はJasperReportの新機能です。大きなレポートを生成しようとしています。私のレポートには多くのサブレポートがありますが、 1048、例外が発生します。私のレポートを生成するためにVirtualizacionを使用し、私のコンピュータにPDFファイルをエクスポートしています。ここ は例外である:JRSwapVirtualizationを用いJasperReport-仮想化コンテキストのロック中に中断されました
Grave: net.sf.jasperreports.engine.JRRuntimeException: Interrupted while locking virtualization context
at net.sf.jasperreports.engine.fill.JRVirtualizationContext.lock(JRVirtualizationContext.java:524)
at net.sf.jasperreports.engine.base.ElementsBlock.lockContext(VirtualizableElementList.java:237)
at net.sf.jasperreports.engine.base.ElementsBlock.afterExternalization(VirtualizableElementList.java:517)
at net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.virtualizeData(JRAbstractLRUVirtualizer.java:590)
at net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.evict(JRAbstractLRUVirtualizer.java:402)
at net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.requestData(JRAbstractLRUVirtualizer.java:548)
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.writeObject(VirtualizableElementList.java:582)
at sun.reflect.GeneratedMethodAccessor384.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at net.sf.jasperreports.engine.base.JRVirtualPrintPage.writeObject(JRVirtualPrintPage.java:274)
at sun.reflect.GeneratedMethodAccessor383.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at java.util.ArrayList.writeObject(ArrayList.java:762)
at sun.reflect.GeneratedMethodAccessor257.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441)
at java.util.Collections$SynchronizedCollection.writeObject(Collections.java:2081)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at net.sf.jasperreports.engine.util.JRSaver.saveObject(JRSaver.java:75)
at net.sf.jasperreports.engine.util.JRSaver.saveObject(JRSaver.java:55)
at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:230)
at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:124)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:666)
Caused by: java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)
at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
at net.sf.jasperreports.engine.fill.JRVirtualizationContext.lock(JRVirtualizationContext.java:520)
... 94 more
UPDATE
イム、コードの次の部分に示されているように:
マイレポート(パッケージ)4つのサブレポート(それらの2持つから成り1ページのみ、もう1ページは1つ以上の場合があります)、この4つのサブレポートから1つの特定の通りのパッケージを生成します。たとえば、 "ST。Julia AV"には984人の人がいて、このアプリは通りにいるすべての人のためのパッケージを生成します。この金額はすべて正しくありますが、人々がレポートエクスポートのクラッシュを増やすと、 WEBAPPに取り組ん
詳細
イムは、Glassfishのを使用して、私は、サーバー用のJVMに3GBのRAMを割り当てます。
try {
cn = dataSourceReports.getConnection();
JRSwapFile swapFile = new JRSwapFile(System.getProperty("java.io.tmpdir"), 30, 10);
virtualizer = new JRSwapFileVirtualizer(1, swapFile, true);
parameters.put(JRParameter.REPORT_VIRTUALIZER,virtualizer);
JasperPrint jp = JasperFillManager.fillReport(ROUTE_REPORT,parameters, cn);
JasperExportManager.exportReportToPdfFile(jp,
"D://placePackage.pdf");
cn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
virtualizer.cleanup();
}
[OK]を、どのように仮想化を初期化しますか?コード行はどのように見えますか?あなたが与えるより多くの文脈? – tobi6
Imはすでに質問を更新しています。 JasperReportの新機能@ tobi6 –
問題ありません。 JRSwapFileの初期化は非常に小さく見えますが、[この回答の中の]サイズ(http://stackoverflow.com/a/2341356/5191221)ははるかに大きくなります。 '新しいJRSwapFile(System.getProperty(" java.io.tmpdir ")、2048、32);'を試してください。それが動作すれば、 'new JRSwapFileVirtualizer(5、swapFile、true);'でページの値を上げることができます。 – tobi6