2012-03-13 8 views
3

データソースとして約.xml(約100 MB)があります。どのようにこのxmlを効率的に、java.lang.OutOfMemoryError: Java heap spaceなしでpdfを準備するのですか?ジャスパーレポートとデータソースとしての巨大なXML

HashMap<String, Object> params = new HashMap<String,Object>(); 
// below i get: java.lang.OutOfMemoryError 
Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(dataSource)); 
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document); 
jasperPrint = JasperFillManager.fillReport(jasperReport, params); 

答えて

1

可能であれば、ヒープを増やすことができます。しかし、100MBのXMLファイル用のDOMを作成し、同じJVMでPDF文書を作成するには、実際には多くのメモリが必要です。イベントベースのSAXパーサーで入力ファイルを処理してみてください。それはメモリフットプリントを大幅に減らすはずです!

+0

XMLデータソース+ SAXパーサー+ジャスパーレポートの接続方法をご存知ですか? – marioosh

+0

実際にはしかし、おそらくSAXパーサーベースのプリプロセッサを使用して、巨大なxmlをレポート作成のために、より小さく解析可能な文書に分割することができます。 –

+0

@marioosh(http://fecplanner.com/jasperreports/docs/faq.html)を見れば、パーサーを設定するためのシステムプロパティを設定できます。 –

関連する問題