पर चल रहा है हमारी वेब आवेदन एक जटिल स्थितिOutOfMemoryError: PermGen अंतरिक्ष - स्प्रिंग के साथ जैस्पर रिपोर्ट बिलाव
यह एसटीएस/Tomcat 7
द्वारा विकसित एक स्प्रिंग अनुप्रयोग है मुठभेड़। आवेदन को Jasper report 4.6.0
के साथ एकीकृत करने के बाद, यह हमेशा 'आउटऑफमेमरी एरर: पर्मजेन स्पेस' फेंक देता है। फिर इसे काम करने का एकमात्र तरीका एप्लिकेशन को पुनरारंभ करना है। लेकिन थोड़ी देर के बाद यह फिर से होता है।
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:442)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
at org.apache.jasper.servlet.JspServletWrapper.loadTagFile(JspServletWrapper.java:240)
at org.apache.jasper.compiler.TagFileProcessor.loadTagFile(TagFileProcessor.java:578)
at org.apache.jasper.compiler.TagFileProcessor.access$000(TagFileProcessor.java:49)
at org.apache.jasper.compiler.TagFileProcessor$TagFileLoaderVisitor.visit(TagFileProcessor.java:655)
यहाँ कुछ निष्कर्ष जब स्थिति तब होती है इस प्रकार हैं::
Oct 17, 2012 3:42:27 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Oct 17, 2012 3:42:30 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
यहाँ मैं जहां पाया चीज के बारे में Jasper
अपवाद के भीतर एक वर्ग है: यहाँ अपवाद से पहले लॉग ऑन है
समस्या किसी भी जैस्पर रिपोर्ट घटकों के बिना पृष्ठ पर हो सकती है। ऐसा लगता है कि जैस्पर रिपोर्ट बीन हर समय एक टैग lib खोजने की कोशिश कर रहा है जब
a request is processed by the back end and responded to the front end
। आम तौर पर लॉग फ़ाइल से मैं देख सकता हूं कि उपरोक्त अपवाद तब तक नहीं फेंक देगा जब तक कि सभी बैक एंड ऑपरेशंस (जेपीए प्रबंधन) पूर्ण नहीं हो जाते हैंडीबग मोड पर लॉग 4 जे चलाते समय, मुझे बहुत सारी जानकारी दिखाई देती है जैसे सभी घटकों को पार्सिंग/प्रतिपादित करना
2012-10-17 15:29:12,025 -- DEBUG -- org.apache.commons.digester.Digester.sax -- startElement(http://jasperreports.sourceforge.net/jasperreports,textElement,textElement) 2012-10-17 15:29:12,025 -- DEBUG -- org.apache.commons.digester.Digester -- Pushing body text '' 2012-10-17 15:29:12,025 -- DEBUG -- org.apache.commons.digester.Digester -- New match='jasperReport/summary/band/textField/textElement' 2012-10-17 15:29:12,025 -- DEBUG -- org.apache.commons.digester.Digester -- Fire begin() for FactoryCreateRule[className=net.sf.jasperreports.engine.xml.JRTextElementFactory, attributeName=null, creat[email protected]12dc6007] 2012-10-17 15:29:12,025 -- DEBUG -- org.apache.commons.digester.Digester -- [FactoryCreateRule]{jasperReport/summary/band/textField/textElement} New net.sf.jasperreports.engine.design.JRDesignTextField 2012-10-17 15:29:12,025 -- DEBUG -- org.apache.commons.digester.Digester.sax -- ignorableWhitespace()
फिर भी, इस लॉग उत्पन्न होती है जब पृष्ठ नहीं है के लिए एक अनुरोध किसी भी जैस्पर घटक शामिल हैं: जैस्पर टेम्पलेट (textfields, कलम, बॉक्स ...), वहाँ विशाल लॉग से एक छोटे से कटौती है।
मैंने कुछ शोध किया लेकिन अभी भी इस मुद्दे का समाधान नहीं मिल रहा है।
पहला सवाल वहाँ आवेदन कारण है कि यह हमेशा (वर्तमान पृष्ठ अर्थ किसी भी जैस्पर घटक नहीं है) जब यह भी वर्तमान सेवा के साथ autowired नहीं है चल रहा है में एक
jasperreport bean
भी है। क्या इस स्थिति का कोई समाधान/उत्तर है?अपवाद संदेश टीएलडी के लिए कम से कम एक जेएआर स्कैन किया गया था, फिर भी कोई टीएलडी नहीं था। org.apache.jasper.compiler.JDTCompiler.generateClass पर (JDTCompiler.java:442)
चाहिए बिलाव, और
Tomcat never contains any JSTL jar
से आता है, तो मैं यह जैस्पर रिपोर्ट इसलिए पार्स एक पूर्ण स्कैन करने के लिए एक मैच टीएलडी नहीं मिल सकता है ग्रहण सभी जारों का। यदि ऐसा है, तोorg.apache.commons.digester.Digester
से बड़ी संख्या में डीबग लॉग कैसे आते हैं वास्तव में जेस्पर टेम्पलेट को पार्स करने में व्यस्त लगता है?
सामान्य तौर पर, सिर्फ समस्या का समाधान यह पता लगाने की कोशिश कर रहा है, और यह भी कारण है कि जैस्पर इतना सक्रिय पर एक जगह यह आवश्यकता नहीं है है का उत्तर नहीं मिलता, और हम कैसे कर सकते हैं इस सूत्र बनाना टोमकैट ने टेम्पलेट्स को सही तरीके से पार्स किया?
यदि वर्बोज़ भी माफी माँगती है, और किसी भी संकेत के लिए धन्यवाद।
तो, आप PermGen के आकार में वृद्धि करने की कोशिश की है? ऐसा नहीं है कि कई अन्य तरीके हैं। –
@Frank Pavageau हाँ मैंने कोशिश की है, यह 512 एम के लिए रखा, लेकिन अभी भी एक ही मुद्दे को मिलता है ... यह 'catalina.sh' और JAVA_OPTS में है =" ...- XX: MaxPermSize = 512 एम ... "? – Dreamer
@FrankPavageau ऐसा लगता है Jasper रिपोर्ट कुछ विन्यास के साथ मुद्दों इस तरह है, तो Jasper रिपोर्ट में मूल कारण के निवारण के बहुत अच्छी तरह से संभव हो सकता है। – eis